shiro不能跳转到登录前请求页面
来源:互联网 发布:淘宝页面怎么装修 编辑:程序博客网 时间:2024/05/22 08:02
现象:某商品展示页面不需要用户登录也可浏览,但是想购买商品时,需要用户先登录,这时点击button提交表单时被shiro拦截,转向登录页面。登录成功够跳转到网站根目录了,应该是跳转到登录前请求页面,即清单结算页面。
问题:由于提交的表单是以POST方式提交的,所以shiro不会取得上次请求路径。
org.apache.shiro.web.util.WebUtils.redirectToSavedRequest(),这个方法内:
if (savedRequest != null && savedRequest.getMethod().equalsIgnoreCase(AccessControlFilter.GET_METHOD)) {
successUrl = savedRequest.getRequestUrl();
contextRelative = false;
}
if (successUrl == null) {
successUrl = fallbackUrl;
}
可以看到需要提交的请求以GET方式才可以取得上次的路径。
解决:form的提交方式改为method=”GET”即可。
或者自己定义CustomFormAuthenticationFilter继承FormAuthenticationFilter。
重写onAccessDenied方法。
思路是:
当请求的路径不是shiro的login路径时,先从request中取得提交的数据并做一个标记值,一同存入session。
当请求的路径是shiro的login路径时,从session取得标记值并判断,判断为真设置shiro的successurl
WebUtils.getAndClearSavedRequest(request);
WebUtils.redirectToSavedRequest(request, response, “需要转向的路径”);
同时,被跳转的路径控制器内从session取得之前存储的值。
- shiro不能跳转到登录前请求页面
- 我的shiro之旅: 十五 shiro 登录成功后,跳转到登录前的页面
- 登录后跳转到登录前页面
- shiro用authc配置后登录成功后不能跳转到index页面
- 实现登录成功后跳转到登录前的页面
- 登录后自动跳转到登录前的页面
- Ajax请求,登录超时,如何跳转到登录页面
- 登陆后自动跳转到登录前页面
- Struts 通过拦截器实现登录后跳转到登录前页面 处理普通Http请求和Ajax请求时拦截配置
- 用户登录后跳转到 登录前 的页面 url 跳转
- 用户登录后跳转到 登录前 的页面 url 跳转 (转自CSDN pasic)
- ASP.NET用户登录后跳转到 登录前 的页面 url 跳转
- shiro登录成功后指定跳转页面
- yii中登录后跳转回登录前请求的页面
- yii2中登录后跳转回登录前请求的页面
- Apache Shiro会话超时,登录页面跳转到父窗体的解决方法
- 如何做登录后自动跳转到登录前要访问的页面
- 如何做登录后自动跳转到登录前要访问的页面
- Dbus-glib使用方法说明
- 高性能MYSQL(高级特性)
- servlet的url-pattern匹配规则
- 【AI版摩尔定律】10张图盘点计算机视觉、语音和文本理解里程碑
- Microservice架构模式简介
- shiro不能跳转到登录前请求页面
- 209. Minimum Size Subarray Sum
- cocoapods错误: ERROR: While executing gem ... (Errno::EPERM) Operation not permitted
- java+selenium环境的搭建
- 舍弃JSP,选择使用freeMarker的原因
- 后台id标识省市县id 前台freemarker数据列表展示
- padding-top margin-top top
- 查看apk的应用包名和activity name
- android app性能测试