标签: Security

  • Spring Security从表单验证到token验证

    对于任何需要认证的系统,Spring Security无疑是一个很好的选择。

    无论是从认证本身,还是权限控制,Spring Security都有极好的支持。

    Form登录是一种极为常见的方式,用户输入用户名和密码,post登录信息,认证之后登录信息保存在session之中。

    但是随着架构演进,前后端逐渐分离,之前的大部分逻辑都变成了API供前端调用,而Form登录逐渐成为累赘,调试上的困难。这个时候就可以考虑换为token模式,进而将后端API stateless化。

    Token的生成和解析

    第一步是选择token的生成和解析,我们来个简单的,token中只包含加密后的用户名,具体生成才是JWT的HS512加密。

    先配置一个登录成功后的响应AuthSuccessHandler

    public class AuthSuccessHandler implements AuthenticationSuccessHandler {
        public static final String SECRET_KEY = "0Qx*@S7q";
    
        @Override
        public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
                                            Authentication authentication) throws IOException, ServletException {
            response.setStatus(HttpStatus.OK.value());
            JsonNodeFactory factory =