免密登录

用户身份鉴定

系统已经集成有其它登录模块

利用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的实现参考:

Spring Boot2

Spring Boot3

系统不需要登录,任意用户都可以匿名访问

利用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

results matching ""

    No results matching ""