spring-security 使用参数url登录Spring Security

sh7euo9m  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(226)

我在使用Spring Security时遇到困难。我需要在URL中使用参数自动登录。
示例:
我用用户名和密码参数link/collectsys/mainlogin.zul?username=ADMIN&password=12345678访问URL,当它被访问时,我希望它能自动登录,比如填写用户名和密码,点击登录按钮。
我在登录按钮上找不到操作,因为我使用的是Spring Security。我应该在Spring文档中查找什么?我使用的是Spring Security 5.5.3版。

sbdsn5lh

sbdsn5lh1#

登录时需要生成一个令牌,用户的客户端使用这个令牌与受spring安全保护的REST API交互。
因此,登录方法需要向客户端返回一个访问令牌,然后将该令牌保存在客户端的会话或cookie中,以便在调用后端时重用。
一个常用的解决方案是JWT,您可以在这里找到一个非常全面的指南:
https://www.bezkoder.com/spring-boot-jwt-authentication/
如果您确实无法对应用程序进行大部分更改,那么您应该研究一下OncePerRequestFilter,它使您能够过滤spring Boot 应用程序的请求

public class AuthenticationFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(
            HttpServletRequest request,
            HttpServletResponse response,
            FilterChain filterChain) throws
            ServletException, IOException {
        String username = request.getParameter("username"); 
        String pw = request.getParameter("password"); 
        User user = database.getUser(username);
        if(user.getPw().equals(pw))
            logger.info("Successfully authenticated user  " + userName);
        else throw new SomeException();
        filterChain.doFilter(request, response);
    }
}

通过这种方式,到达应用程序的任何请求在到达控制器逻辑本身之前都会通过此过滤器一次。

相关问题