Spring 安全 - 将参数传递到登录页面

Spring security - passing parameters to login page

我正在开发基于 Java/J2EE 和 Spring 的 Web 应用程序。我们正在使用 spring 安全配置进行登录。我有一个要求,但不知道如何实现它。要求: 每当匿名用户点击主页上的 'View Address Book' link 时,他们应该被重定向到 login/signup 页面。 login/signup 页面的 header 应设置为 "Please login/signup to view your address book"。

现在,这里我不是根据我应该更改的参数 login/signup 页面标题。

求推荐。参考具体 files/steps 将不胜感激。

此致, 阿伦

您可以使用 SavedRequest 接口。 Spring security 使用 SavedRequest 类型来存储重定向 url 和参数。

  1. 创建自定义登录控制器来为您的 login.jsp 视图提供服务。
  2. 从 HttpSessionRequestCache 获取 SavedRequest 对象
  3. 获取请求的url和参数savedRequest。
  4. 将其作为模型属性传递到 login.jsp 页面。

    @Controller
    public class LoginController {
        @RequestMapping("/login")
        public ModelAndView showLoginPage(HttpServletRequest request, HttpServletResponse response) {
    
            SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);
    
            String requestedUrl  = savedRequest.getRedirectUrl();
            ModelAndView model =  new ModelAndView("login");
            model.addObject("requestedUrl",requestedUrl);
            return model;
        }
    }
    

    你也可以通过

    获取请求参数
    savedRequest.getParameterValues("parameterName");