前后分离

用户认证信息使用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