Skip to content
lorgine edited this page Oct 9, 2018 · 1 revision

1. 页面权限控制

1.1. 用户角色

角色说明:主要分为普通用户、应用管理员、超级管理员

  • 普通用户:拥有所有应用以及实例的查看权限,没有操作权限。

  • 应用管理员:特定应用的管理员,对于指定应用以及该应用所属的实例具有操作权限。应用的操作,主要为更新应用的版本号以及编辑应用元数据信息。这里可以修改应用的管理员,应用的所有者和成员为该应用的管理员。实例的操作权限,主要可以对于实例进行“拉入/拉出”操作以及对于实例的“一键启停”操作。当用户为该应用的管理员时,用户只可以操作该应用对应的实例。其他实例只显示状态,不显示操作按钮。

  • 超级管理员:系统管理员,对于所有应用和实例都具有操作权限,并且拥有系统权限,可以实时测试实例的运行情况,查看应用、实例、集群的缓存信息和trace信息等,具体可参照Radar界面操作。超级管理员可以通过配置文件中配置radar.admin.username=***,值为用户的用户id,多个以逗号分隔。

1.2. 权限实现

权限实现需要实现RoleService接口,该接口主要有一个方法
int getRole(T t);//获取用户的角色

这里在radar-dependency-ui模块内,提供了默认实现DefaultRoleService,主要实现逻辑为获取当前用户信息,通过用户的实体类UserBo的isAdmin属性来判断是否为系统管理员,UserBo的isAdmin中的值设定则根据配置文件中设置的radar.admin.username=***来判别。根据应用的owner和member来判断是否为应用管理员。

2. 用户登录

2.1. 登录原理

login页面 Radar portal默认内置是通过配置Filter来实现用户登录的功能。当用户登录通过之后,会将用户id保存在加密保存在cookie中,key值为userSessionId。每次拦截到请求时,判断cookie的值,如果cookie中没有,则拦截该请求,跳转到登录界面。如果有,则将cookie中的值反向解密,如果成功则将userid值存放在ServletRequest中,便于在后续操作中,获取当前登录用户的用户id,否则跳转到登录页面。

为了实现用户登录和权限控制,用户需要实现自己的用户系统,radar中内置了一个基于ldap域控的用户模块,用户也可以自己实现自己的用户模块,具体请参考下面章节。

2.2. 自定义用户

如果用户想接入自己的用户系统,只需要实现UserService接口即可,该接口主要有以下四个方法:

  • boolean login(String userName, String passWord);//验证用户名密码是否正确
  • Map<String, UserBo> getUsers();//获取所有用户,key值为userId
  • Map<String, OrganizationBo> getOrgs();//获取所有部门,key值为orgId
  • UserBo getCurrentUser();//获取当前登录的用户信息`

radar-dependency-ui模块内,提供了缺省的默认实现类LdapUserService,接入方式为公司的统一认证系统LDAP,通过域账号即可登录。
如果公司内部有域控系统,则很容易接入。只需要在配置文件中配置LDAP服务器地址,以及搜索路径、以及访问LDAP的用户名和密码即可。

  • ADServer=*** #ldap 域控地址
  • SearchBase=*** #ldap 域控搜索路径 以 | 隔开
  • radar.ldapUser=*** #访问ldap的用户名
  • radar.ldapPass=*** #访问ldap的用户名密码