Tars 用户体系模块使用指引

TARS管理平台提供了与用户体系(包括单点登录系统和权限系统)对接的能力,若用户本身无相应的系统,TARS可提供了一个简易的用户体系模块,供用户选装。用户体系模块提供了单点登录和注册的功能,以及到服务层级的权限控制能力。用户也可以选择只使用其中一个功能。

用户体系模块安装

若用户想使用默认的用户体系模块,则需先安装web中的用户体系管理平台模块。相应的: 数据库名:db_user_system 安装步骤与TARS管理平台安装步骤相同,不做赘述。

其中: 1)默认登录模块:提供基础的注册和登录页面,对外提供获取用户信息的接口getUidByTicket和校验是否登录的接口validate, getUidByTicket接口接收一个ticket参数,返回uid validate接口接收ticket参数和uid参数,返回result(true或false); 2)默认权限模块:权限模块数据库表中有三个字段,为flag,role和uid,分别对应标志(在TARS平台中为“应用+服务”表示一个标志),角色和用户。

权限模块对外提供6个接口和一个页面:

  1. /auth/addAuth 批量新增权限接口,入参为[{flag: “”,role: “”,uid: “”}],
  2. /auth/deleteAuth:删除权限接口,入参为flag,删除flag下所有权限信息
  3. /auth/updateAuth:更新权限接口,入参为flagroleuid,其中,uid为用户列表,表示更新某个flagrole下的所有用户信息。
  4. /auth/getAuthListByUid:获取某用户具有的全部权限列表,入参为uid
  5. /auth/getAuth:判断用户是否具有权限,入参为flagroleuid
  6. /auth/getAuthListByFlag:获取有某个flag权限的用户信息,入参为flag
  7. 权限模块还提供了一个管理页面:
  8. /auth.html:用于对权限进行增删改查。

注意:默认的权限模块,为保证系统安全性,以上的列的6个接口,必须采用白名单的方式访问,不允许被其他人随意调用,管理页面Auth.html 需系统管理员才可使用。白名单和管理员的相关配置,可在/config/authConf.js中配置。

TARS对接登录模块能力

TARS 通过配置文件/config/loginConf.js 与 第三方登录体系,或默认用户体系登录模块关联,提供允许用户登录的能力。 其中,登录配置文件详细信息如下:

  1. {
  2. enableLogin: true, //是否启用登录验证
  3. defaultLoginUid: 'admin', //若不启用登录验证,默认用户为admin
  4. loginUrl: 'http://localhost/login.html', //跳转到的登录url
  5. redirectUrlParamName: 'service', //跳转到登录url的时带原url的参数名,如:***/login?service=\*\*\*,默认是service
  6. logoutUrl: '', //登出的url
  7. logoutredirectUrlParamName: 'url', //跳转到登录url的时带原url的参数名,与登录的参数功能一致
  8. ticketCookieName: 'ticket', //cookie中保存ticket信息的cookie名
  9. uidCookieName: 'uid', //cookie中保存用户名信息的cookie名
  10. cookieDomain: 'localhost', //cookie值对应的域,若为空,则为当前管理平台所在域
  11. ticketParamName: 'ticket', //第三方登录服务登录成功回调时候,url中表示ticket的参数名
  12. getUidByTicket: 'http://localhost/getUidByTicket',
  13. //此处可以为一个url,或一个函数方法,通过ticket从登录服务端校验和获取用户基本信息的url 或 获取用户基本信息的方法。若是函数方法,则以下getUidByTicketParamName和uidKey参数无效,方法直接返回用户名即可
  14. getUidByTicketParamName: 'ticket', //调用获取用户信息接口时候ticket的参数名
  15. uidKey: 'data.uid', //结果JSON里面取出用户名的位置,取到该用户名才认为成功,可以多层,示例中表示从返回值的data对象中取uid。
  16. validate: 'http://example.com/api/validate',
  17. //通过token和用户名到登录服务端校验key和用户名是否匹配的url或方法,若是函数方法,则以下validateTicketParamName,validateUidParamName和validateMatch参数无效,方法直接返回true或false表示是否通过登录即可。
  18. validateTicketParamName: 'ticket', //校验接口传入ticket参数名
  19. validateUidParamName: 'uid', //校验接口传入用户参数名
  20. validateMatch: [
  21. ['data.result', true]
  22. ], //校验通过匹配条件,可以从多层结果,多个情况进行匹配判断
  23. ignore: ['/static', '/tarsnode.tar.gz'], //不需要登录校验的路径段
  24. ignoreIps: [], //访问ip白名单,在白名单内的ip,可直接跳过登录校验
  25. apiPrefix: ['/pages/server/api'], //接口相应的路径前缀,此类前缀请求,若无登录,不跳转到登录页面,而是提示未登录
  26. apiNotLoginMes: '您尚未登录', //接口无登录时的提示语
  27. }

TARS对接权限模块能力

TARS 通过配置文件/config/authConf.js 与 第三方权限系统,或默认用户体系权限模块关联,提供权限控制的能力。 其中,权限配置文件详细信息如下(接口入参和出参与上述第1点用户体系权限模块一致):

  1. {
  2. /**
  3. * 是否启用自定义权限模块
  4. */
  5. enableAuth: false,
  6. /**
  7. * addAuthUrl 新增权限url
  8. * TARS平台会提供的参数
  9. * @param {Array} auth 权限对象列表,格式如 {"flag": "app-server", "role": "operator", "uid": "username"}
  10. */
  11. /**
  12. * 接口需要返回的参数
  13. * @param {Number} ret_code 返回码,200表示成功
  14. * @param {String} err_msg 错误信息
  15. */
  16. addAuthUrl: 'http://localhost/api/auth/addAuth',
  17. /**
  18. * deleteAuthUrl 删除权限url,用于服务下线时候删除权限
  19. * TARS平台会提供的参数
  20. * @param {String} flag 权限单位,在tars中为“应用-服务”
  21. */
  22. /**
  23. * 接口需要返回的参数
  24. * @param {Number} ret_code 返回码,200表示成功
  25. * @param {String} err_msg 错误信息
  26. */
  27. deleteAuthUrl: 'http://localhost/api/auth/deleteAuth',
  28. /**
  29. * updateAuthUrl 更新权限url
  30. * TARS平台会提供的参数
  31. * @param {String} flag 权限单位,在tars中为“应用-服务”
  32. * @param {String} role 角色,在tars中为operator或developer
  33. * @param {String} uid 用户名
  34. */
  35. /**
  36. * 接口需要返回的参数
  37. * @param {Number} ret_code 返回码,200表示成功
  38. * @param {String} err_msg 错误信息
  39. */
  40. updateAuthUrl: 'http://localhost/api/auth/updateAuth',
  41. /**
  42. * getAuthListByUidUrl 通过用户名获取权限列表url
  43. * TARS平台会提供的参数
  44. * @param {String} uid 用户名
  45. */
  46. /**
  47. * 接口需要返回的参数
  48. * @param {Array} data 服务列表,内容如下
  49. * @param {String} flag 权限单位,在tars中为“应用-服务”
  50. * @param {String} role 角色,在tars中为operator或developer
  51. * @param {String} uid 用户名
  52. * @param {Number} ret_code 返回码,200表示成功
  53. * @param {String} err_msg 错误信息
  54. */
  55. getAuthListByUidUrl: 'http://localhost/api/auth/getAuthListByUid',
  56. /**
  57. * getAuthListByFlagUrl 通过应用名+服务名获取用户列表url
  58. * TARS平台会提供的参数
  59. * @param {String} flag 应用+服务名
  60. */
  61. /**
  62. * 接口需要返回的参数
  63. * @param {Array} data 服务列表,内容如下
  64. * @param {String} flag 权限单位,在tars中为“应用-服务”
  65. * @param {String} role 角色,在tars中为operator或developer
  66. * @param {String} uid 用户名
  67. * @param {Number} ret_code 返回码,200表示成功
  68. * @param {String} err_msg 错误信息
  69. */
  70. getAuthListByFlagUrl: 'http://localhost/api/auth/getAuthListByFlag',
  71. /**
  72. * getAuthUrl 判断用户是否有相应角色的操作权限
  73. * TARS平台会提供的参数
  74. * @param {String} flag 权限单位,在tars中为“应用-服务”
  75. * @param {String} role 角色,在tars中为operator或developer
  76. * @param {String} uid 用户名
  77. */
  78. /**
  79. * 接口需要返回的参数
  80. * @param {Object} data 服务列表,内容如下
  81. * @param {Boolean} result 是否有操作权限
  82. * @param {Number} ret_code 返回码,200表示成功
  83. * @param {String} err_msg 错误信息
  84. */
  85. getAuthUrl: 'http://localhost/api/auth/getAuth'
  86. }