前后分离

用户认证信息使用UserTokenManager进行管理,hsweb默认提供了基于sessionIdtoken实现,如果在需要前后分离,可以自行拓展UserTokenGeneratorUserTokenParser

自定义Token策略

  1. 自定义UserTokenGenerator

MyUserTokenGenerator.java
@Component
public class MyUserTokenGenerator implements UserTokenGenerator {

    private int timeout = 30 * 60 * 1000;

    @Override
    public String getSupportTokenType() {
       // 登录时,请求参数为 token_type = token 时,此配置生效
        return "token";
    }

    @Override
    public GeneratedToken generate(Authentication authentication) {
        String token = IDGenerator.MD5.generate();

        return new GeneratedToken() {
            @Override
            public Map<String, Object> getResponse() {
                //返回给前端的参数,前端拿到此参数后自行处理
                return Collections.singletonMap("token", token);
            }

            @Override
            public String getToken() {
                return token;
            }

            @Override
            public int getTimeout() {
                // token 超时时间,超过时间没有请求时,自动失效
                return timeout;
            }
        };
    }
}

2. 自定义UserTokenParser

MyUserTokenParser.java
@Component
public class MyUserTokenParser implements UserTokenParser {
    @Override
    public ParsedToken parseToken(HttpServletRequest request) {
        //获取参数中的token
        String token = request.getParameter("token");

        if(StringUtils.isEmpty(token))return null;

        return () -> token;
    }
}

3. 在登录时,多传入一个参数: token_type=token

Last updated