免密登录
用户身份鉴定
系统已经集成有其它登录模块
利用BaskServer的SecurityProvider的实现类的getLoginUser方法,从request对象中获取token对应的用户对象组装为BaskServer需要的User对象返回.
public User getLoginUser(HttpServletRequest req) {
//利用req获取当前系统的登录用户,例如通过token信息获取对应的用户对象
DomainUser userObj = xxxx;//TODO
if(userObj!=null) {
ArrayList<Tenant> tenants = new ArrayList<Tenant>();
Tenant tenant=new Tenant();
tenant.setId("basksoft");//数据库中对应的团队必须存在
tenant.setCreateUser("admin");
tenants.add(tenant);
//返回BaskServer的用户对象,把当前登陆用户的系统账号和用户名复制到DefaultUser对象中
return new DefaultUser(userObj.getAccount(), userObj.getUserName(), true, tenants);
} else {
return null;
}
}
token获取方式参考: AccessToken
SecurityProvider的实现参考:
系统不需要登录,任意用户都可以匿名访问
利用BaskServer的SecurityProvider的实现类的getLoginUser方法,返回一个固定的BaskServer需要的User对象返回就可以
public User getLoginUser(HttpServletRequest req) {
// 实现匿名登录
ArrayList<Tenant> tenants = new ArrayList<Tenant>();
Tenant tenant = new Tenant();
tenant.setId("basksoft");// 数据库中对应的团队必须存在
tenant.setCreateUser("admin");//对应为团队创建者
tenants.add(tenant);
return new DefaultUser("admin", "管理员", true, tenants);
}
用户身份识别
在BaskServer中每个用户在不同的团队中拥有不同的角色,当你访问指定团队的Bask的文件资源时,需要指定用户的身份,否则有些资源会无法访问。 我们可以通过UserService的实现类指定身份:
@Override
public TenantUser getTenantUser(String tenantId, String account) {
TenantUser teantUser = new TenantUser();
teantUser.setAccount(account);
teantUser.setTenantId(tenantId);
teantUser.setRole(TenantRoleEnum.Viewer);
return teantUser;
}
其中TenantUser的role属性的值可以根据项目需要设定,不同的role的权限区别参考:团队角色
UserService接口是BaskServer中获取用户信息对应的接口类。 BaskServer利用【SPI】实现用户服务类的扩展。 实现方法参考:UserService