文档章节

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
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
在不修改tomcat源码的前提下,怎么参与httpsession的产生过程

以前修改tomcat源码实现了httpsession共享,现在想使用标准的servlet api 实现session共享,简单场景描述如下: web 服务接收用户请求,如果容器(例如:tomcat)内没有用户的session信息,则从memca...

光石头
2013/10/24
824
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

新工作与老项目

新的工作不知不觉的干了一个多月了。怎么说呢,跟想象中的差别不少,本来想的能进来跟大公司的同事能有很多交流,能在团队中跟大牛学习更快。结果公司的这个项目上只有两个程序员,项目是十年...

zypy333
9分钟前
0
0
mysql 在windows的安装

mysql 在windows的安装。 mysql64位的server的下载地址是: https://dev.mysql.com/downloads/mysql/ 使用的是5.7版本。 下载安装包,解压至D:\mysql\mysql-5.7.23-winx64\ 在D:\mysql\mysq...

lxzh504
22分钟前
1
0
云技术、大数据(hadoop)入门常见问题回答

当我们学习一门新技术的时候,我们总是产生各种各样的问题,这些问题整理出来,包括该 1.如何学习hadoop? 2.hadoop常见问题? 3.还有hbase、hive安装使用等? 你知道搭建hadoop平台需要些什...

董黎明
22分钟前
1
0
小程序自定义底部tab

场景 1.tabBar是在内页而非首页,这时就不得不自定义一个tabBar了 2.自定义风格 3.子页数量超过5个,得到更多了tab 4.改变点击tab默认事件,比如出登录界面,或者弹出上拉子菜单等 步骤 1.照...

萤火的萤火
27分钟前
1
0
shell炫技

1.为脚本添加“--help” #!/bin/shif [ ${#@} -ne 0 ] && [ "${@#"--help"}" = "" ]; then printf -- '...help...\n'; exit 0;fi; 2.输出字体添加颜色 https://misc.flogisoft.com......

HJCui
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部