gpt4 book ai didi

spring - 对 "keep me signed in"使用 java spring AbstractPreAuthenticatedProcessingFilter

转载 作者:行者123 更新时间:2023-12-05 05:27:19 27 4
gpt4 key购买 nike

为了在使用 Spring 2.5 的应用程序上实现“让我保持登录状态”选项,我试图通过创建一个扩展 AbstractPreAuthenticatedProcessingFilter 的 CustomPreAuthenticatedProcessingFilter 来实现它。但是,我无法这样做可能是因为我错过了一些事情。以下是我到目前为止所做的:

  1. 已创建 CustomPreAuthenticaionProcessingFilter:

    导入javax.servlet.http.Cookie; 导入 javax.servlet.http.HttpServletRequest;

    import org.springframework.security.ui.preauth.AbstractPreAuthenticatedProcessingFilter;

    import com.domain.User;
    import com.service.UserService;

    public class CustomPreAuthenticaionProcessingFilter extends
    AbstractPreAuthenticatedProcessingFilter {

    private UserService userService;

    @Override
    public int getOrder() {
    // TODO Auto-generated method stub
    return 0;
    }

    @Override
    protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {
    Cookie[] cookies = request.getCookies();
    String[] cookieValues = null;
    for (Cookie cookie : cookies) {
    if(cookie.getName().equalsIgnoreCase("loggedInCookie")){
    cookieValues = cookie.getValue().split(":");
    }
    }
    if(cookieValues!=null && cookieValues.length==3){
    try {
    User user = userService.getLoggedInUser(cookieValues[0], cookieValues[1], cookieValues[2]);
    if(user!=null)
    return user;
    } catch (Exception e) {
    System.out.println("not authenticated");
    }
    }
    return "";
    }

    @Override
    protected Object getPreAuthenticatedCredentials(HttpServletRequest request) {
    return "";
    }

    /**
    * @param authenticationManager
    * The AuthenticationManager to use
    */
    public void setUserService(UserService userService) {
    this.userService = userService;
    }


    }
  2. 创建拦截器,如果不存在则检查 cookie 是否存在。

我在这里面临的问题是过滤器被多次调用,不知道为什么,而且即使通过过滤器检索对象,它也不会绕过登录页面直接重定向到应用程序。

如果有人在同一行上实现了一些东西,那将非常有帮助。

谢谢,-V

最佳答案

你有没有通过这个 http://docs.spring.io/autorepo/docs/spring-security/3.0.x/reference/remember-me.html .

如果您能够遵循该方法,那么使用更高版本的 spring 实现起来应该也不难。

关于spring - 对 "keep me signed in"使用 java spring AbstractPreAuthenticatedProcessingFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com