2015-05-13 60 views
0

我正在使用基于Spring的Web应用程序的Java/J2EE &。我们使用弹簧安全配置进行登录。我有一个要求,并没有得到如何实施它。要求: 每当匿名用户点击主页上的“查看地址簿”链接时,他们应该重定向到登录/注册页面。并且登录/注册页面的标题应设置为“请登录/注册以查看您的地址簿”。春季安全 - 传递参数登录页面

现在,在这里我没有得到什么参数我应该改变登录/注册页面标题。

请建议。对特定文件/步骤的参考将不胜感激。

问候, 阿伦

回答

1

您可以使用SavedRequest接口。 Spring安全使用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"); 
    
+0

嗨sadasidha get请求参数,httpSessionRequestCache是​​在我的控制器已经存在。我不知道它的用法。感谢您的输入。它在一定程度上解决了我的问题。实际上,现在,只要点击“查看地址簿”链接,就会在“登录/注册”页面显示正确的消息。但是,如果我点击'登录'链接,然后还保存请求返回保存的参数和jsp再次显示地址簿消息。你有处理这种情况的好方法吗? – Arun

+0

@Arun - 如果请求来自登录页面,您可以让depores显示和/或从savedRequest中移除参数。 也考虑接受我的答案,如果有帮助。 – mirmdasif

+0

我可以在提供'referer'检查后修复它。谢谢!没有看到任何选择接受。已经投了票。 – Arun