文档章节

shiro 404 jessionid

110hxl
 110hxl
发布于 2015/04/20 11:38
字数 302
阅读 20
收藏 0

1. 问题提出的根源:

处理404 notfound错误。

 原因分析

shiro的DefaultWebSessionManager把session自己管理起来了,不放到web容器里,那么当发生404时,web容器在处理过程里发现容器里没有session,那么就会建立一个新的sessionid,然后把sessionid绑定到请求上。于是shiro框架就认为是一个新的session来了,但是没有登录,所以自动跳转到login页面。

成功的方案

不用web容器的error-page处理。在spring mvc里配置一个能匹配所有请求的处理器,但是要保证这个默认的处理器排在url映射匹配排序的最后。

spring-mvc.xml里添加如下的bean

<bean id="defaultController" class="com.ikang.base.web.DefaultController" />
<bean id="defaultUrlMapping"
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="order" value="2147483647" /><!-- 此处的order很重要,要低于 mvc:resources的默认值214    7483646-->
        <property name="mappings">
            <props>
                <prop key="/*/**">defaultController</prop>
            </props>
        </property>
</bean>
public class DefaultController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
    throws Exception {
    return new ModelAndView("error/404");
    }
}

注意:此controller一定不要用annotation方式,必须如上实现Controller接口。因为如果用@Controller/@RequestMapping注解方式的话,就不能保证顺序排在匹配映射顺序的最后了。

本文转载自:http://www.cnblogs.com/thefun/p/3326373.html

共有 人打赏支持
110hxl
粉丝 6
博文 193
码字总数 48724
作品 0
深圳
程序员
jfinal的JESSIONID问题

@JFinal 你好,想跟你请教个问题: JESSIONID导致Jfinal无法识别,报404错误。 格式为http://xxxxxx/xxx;JESSIONID=XXXX-XXX-XXX-XXX...

本人dddd牛仔
2014/05/31
449
2
Tomcat7 的 URL 中的 jsessionid 的问题:Page Not Found

今天发现了这样一个问题,在 Tomcat 7 以前使用一些框架开发的应用经常会有如下格式的 URL http://www.oschina.net/test;jsessionid=xxxxxxxxxxx 这一般是在 session 第一次创建的时候进行 ...

红薯
2011/04/27
7.8K
5
Shiro报错No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/63257702 问题描述: 项目使用 SpringMVC 并使用 Shiro 来管理Session控制权限。 经常...

单红宇
2017/03/18
0
0
spring mvc AOP+Shiro 注解出错!

在spring mvc AOP+Shiro的项目中,在controller 方法上使用了shiro的权限注解@RequiresPermissions(":"),现在要用aop去拦截controller的返回值,结果加了shiro拦截注解的方法所有的方法都提...

pnwazgx
2016/04/27
143
0
springmvc返回的页面404 在线等答案

说明:项目是Spring Springmvc Hibernate Shiro整合的测试项目 首先贴出我的配置文件的关键配置 web.xml 中DispatchServlet配置的是拦截全部路径,如下图 springmvcorg.springframework.web...

梁阳波
2014/07/31
4.6K
3

没有更多内容

加载失败,请刷新页面

加载更多

[Hive]JsonSerde使用指南

注意: 重要的是每行必须是一个完整的JSON,一个JSON不能跨越多行,也就是说,serde不会对多行的Json有效。 因为这是由Hadoop处理文件的工作方式决定,文件必须是可拆分的,例如,Hadoop将在...

Mr_yul
24分钟前
1
0
54:mysql修改密码|连接mysql|mysql常用命令

1、mysql修改密码: root用户时mysql的超级管理员,默认mysql的密码是空的,直接可以连接上去的,不过这样不安全; 注释:为了方便的使用mysql,需要把mysql加入到环境变量里; #后续自己输入mys...

芬野de博客
31分钟前
1
0
鼠标单击复制粘贴标签中的内容

<span ref="spanContentOne" id="spanContentOne" style="font-size: 14px;">或许不是最亮眼,总比瞎买强一点</span><!--<input type="button" @click="copyClick('1')" value="复制" />-......

帝子兮
36分钟前
1
0
使用axel多线程疯狂下载

在Linux中比较常见见的下载工具是curl和wget,但是下载比较大的文件两者都不支持多线程, 断点续传的作用不见得能发挥到最大。今天介绍一个axel工具,开启多线程疯狂下载。 安装 Fedora/Cen...

linuxprobe16
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部