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 和参数。
- 创建自定义登录控制器来为您的 login.jsp 视图提供服务。
- 从 HttpSessionRequestCache 获取 SavedRequest 对象
- 获取请求的url和参数savedRequest。
将其作为模型属性传递到 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");
我正在开发基于 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 和参数。
- 创建自定义登录控制器来为您的 login.jsp 视图提供服务。
- 从 HttpSessionRequestCache 获取 SavedRequest 对象
- 获取请求的url和参数savedRequest。
将其作为模型属性传递到 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");