文档章节

shiro 404 jessionid

110hxl
 110hxl
发布于 2015/04/20 11:38
字数 302
阅读 20
收藏 0
点赞 0
评论 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注解方式的话,就不能保证顺序排在匹配映射顺序的最后了。

© 著作权归作者所有

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

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

本人dddd牛仔 ⋅ 2014/05/31 ⋅ 2

Tomcat7 的 URL 中的 jsessionid 的问题:Page Not Found

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

红薯 ⋅ 2011/04/27 ⋅ 5

spring mvc AOP+Shiro 注解出错!

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

pnwazgx ⋅ 2016/04/27 ⋅ 0

springmvc返回的页面404 在线等答案

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

梁阳波 ⋅ 2014/07/31 ⋅ 3

在不修改tomcat源码的前提下,怎么参与httpsession的产生过程

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

光石头 ⋅ 2013/10/24 ⋅ 4

云梦/shiro-struts2

#shiro-struts2 简单整合,更强及自身业务需要自己实现扩展 shiro本身是插件式的,所以ORM层框架可更换,web层框架可更换, 使用shiro最简单的是使用shiro本身提供的已有的类,自己只需扩展一...

云梦 ⋅ 2014/10/29 ⋅ 0

《跟我学Shiro》系列教程PDF完结版下载

Shiro目录 第一章 Shiro简介 第二章 身份验证 第三章 授权 第四章 INI配置 第五章 编码/加密 第六章 Realm及相关对象 第七章 与Web集成 第八章 拦截器机制 第九章 JSP标签 第十章 会话管理 ...

HenrySun ⋅ 2016/10/09 ⋅ 0

关于setErrorRenderFactory的问题

项目中使用JFinal,我想使用自己定义的错误页面的渲染。 public void configConstant(Constants me) { GlobalErrorRenderFactory.java public class GlobalErrorRenderFactory implements IE......

跳蚤 ⋅ 2016/05/27 ⋅ 2

java jessionid问题

我利用HttpURLConnection的方式对动态网站读取并将其静态化, URL url = new java.net.URL(httpUrl); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connectio......

douya_love ⋅ 2013/02/21 ⋅ 1

JFinal 中 403、404、500不生效

项目搭建的是JFinal+@玛雅牛 的shiro插件 在设置 /** * 配置常量 */public void configConstant(Constants me) {logger.info("===================configConstant");// 加载少量必要配置,随......

小99 ⋅ 2014/09/11 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 53分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部