繁体   English   中英

使用参数 url 登录 spring security

[英]login with param url spring security

我在使用 Spring Security 时遇到了困难。 我需要使用 URL 中的参数自动登录。

例子:
我使用用户名和密码参数链接/collectsys/mainlogin.zul?username=ADMIN&password=12345678 访问 URL。 访问的时候希望它自动登录,比如填写用户名和密码,点击登录按钮。

由于我使用的是 Spring Security,我无法在登录按钮上找到操作。 我应该在 Spring 文档中寻找什么? 我正在使用 Spring Security 5.5.3 版。

登录时需要生成令牌。 然后,用户的客户端使用此令牌与受 Spring Security 保护的 REST API 进行交互。

因此,登录方法需要向客户端返回一个访问令牌,然后将其保存在客户端的会话或 cookie 中,以便在调用后端时重用。

一种常用的解决方案是 JWT,您可以在此处找到一个非常全面的指南:

https://www.bezkoder.com/spring-boot-jwt-authentication/

如果您确实无法更改应用程序的大部分内容,那么您应该查看使您能够过滤 Spring Boot 应用程序的请求的OncePerRequestFilter

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);
    }
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM