在视频教程中讲请求认证成功后跳转页面的问题是一笔带过的,可是我认为有必要单独写一篇相应的文章进行叙述。

     我用了SSH来整合Shiro,在开发后验证的过程中,每次登陆后Shiro都会跳转到一个不知名js中。可是重点是我上一次訪问的地址是:
http://localhost:8080/shiro_05/user/login.action

认证之后应该跳转到上一个请求的地址,可是Shiro却跳转到了:

http://localhost:8080/shiro_05/user/js/eqmt.js
本应该跳转到上一次訪问的页面的。可是却跳转到这个js文件的请求路径中,并且这个路径还是奇奇怪怪的。

我猜这个问题应该困扰了不少人。即使js、css等目录配置了匿名訪问等,还是出现这个问题:【认证后地址乱跳,不是上一个你所请求进来时候所在的地址】。甚至有人放弃了Shiro自带的“跳转到上一个请求路径”这个功能。应该也有非常多人攻克了这个问题,在这里,我就简单说一下吧。

经过检查后最终发现问题所在:在页面中存在还有一个非绝对路径的请求地址!

此文老猫原创。转载请加本文连接:http://blog.csdn.net/nthack5730/article/details/51132560

很多其它有关老猫的文章:http://blog.csdn.net/nthack5730

首先说一下在Shiro中配置默认认证成功后跳转的地址或者请求:
在shiroFilter的Bean配置中
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
....
</bean>

加入一下验证成功后的地址參数:

<property name="successUrl" value="/user/list.action" />
就能够使每次在认证成功后自己主动转发到value里面的地址(我这里用的是/user/list.action。也就是去请求这个地址)
当不配置这个參数的时候,Shiro会自己主动请求上一次你訪问的地址。如果。你訪问地址:http://localhost:8080/shiro_01/user/
如今如果这个地址是须要认证通过才干訪问的,也就是在过滤链中配置为/user/** = authc
那么就会进入认证页面。而上面的地址就会被保存至Shiro中,当认证通过后,会自己主动请求浏览器訪问刚刚保存的地址
http://localhost:8080/shiro_01/user/
可是当页面文件载入不对,在认证完毕后就会訪问地址:
http://localhost:8080/shiro_01/user/***.***
我的改动前的页面在认证后浏览器会去訪问以下这个地址:
http://localhost:8080/shiro_01/user/js/eqmt.js

此文老猫原创。转载请加本文连接:http://blog.csdn.net/nthack5730/article/details/51132560

很多其它有关老猫的文章:http://blog.csdn.net/nthack5730

为什么会出现这个问题呢,原因就在于登陆页面中也许有部分的第三方载入的样式、js等文件没有被正确录入。什么是不对录入。仅仅要是请求本地server,或者请求为:http://localhost:8080/shiro_01/*******.***
这样的形式的,也就是在认证前和你上一个訪问的页面之间再訪问本server被shiro拦截的随意地址。就会被Shiro自己主动保存至上一个请求地址的这个变量中。当你认证完毕后会Shiro就会要求你的浏览器自己主动跳转到这个地址
【注:CDN挂载载入的不算。由于不是请求本server。】

以下给出我的页面代码。里面的请求【自带js】这部分就是为http请求的而不是绝对路径载入进来的:
<!-- 公共样式文件引入 -->
<jsp:include page="Template/css.jsp"></jsp:include> <!-- 自带js -->
<script src="js/eqmt.js"></script> <!-- 自建样式表 -->
<link href="${pageContext.request.contextPath}/css/eqmt.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/css/login.css" rel="stylesheet" type="text/css">
除了:<script src="js/eqmt.js"></script>
这个载入通过绝对路径载入不成功。然后浏览器自己主动訪问了相对地址,即浏览器用http的形式訪问,Shiro记录这个eqmt.js文件的訪问地址(还是错误的地址)其它的都是内部绝对路径訪问的。

【我在过滤链里面配置了相应绝对路径的文件的匿名訪问】

仅仅要将错误载入的代码改正或删除或者将文件挂载到cdn訪问,问题就能够攻克了:
<script src="${pageContext.request.contextPath}/js/eqmt.js"></script>
PS:里面的:${pageContext.request.contextPath}是我的项目地址。

JSP有这个蛋疼的问题,相信非常多人都知道。

【上面的总结是我个人感受写的,可能详细的学名和形容词在形容的过程中用得不恰当。望大家发现后指出并帮忙纠正。感激不尽!

此文老猫原创。转载请加本文连接:http://blog.csdn.net/nthack5730/article/details/51132560

很多其它有关老猫的文章:http://blog.csdn.net/nthack5730

Shiro整合SSH开发3:配置Shiro认证后页面地址跳转问题(和详述不配置须要注意的问题)的更多相关文章

  1. 限制SSH访问源,禁止4A之外的地址跳转访问

    [fuel节点] 在/etc/hosts.allow文件中添加: sshd:10.129.0.1:allow sshd:10.129.0.2:allow sshd:10.129.0.3:allow s ...

  2. 业务逻辑:五、完成认证用户的动态授权功能 六、完成Shiro整合Ehcache缓存权限数据

    一. 完成认证用户的动态授权功能 提示:根据当前认证用户查询数据库,获取其对应的权限,为其授权 操作步骤: 在realm的授权方法中通过使用principals对象获取到当前登录用户 创建一个授权信息 ...

  3. Linux配置虚拟主机后,只能访问到主页怎么办?

    Linux配置虚拟主机后,只能访问到主页怎么办? 今天配置了lamp后,添加了一个虚拟主机,配置http.conf后,增加虚拟主机,测试访问发现只有域名下能访问,ljt.com但是域名下所有的都访问不 ...

  4. Spring Boot 2.x 综合示例-整合thymeleaf、mybatis、shiro、logging、cache开发一个文章发布管理系统

    一.概述 经过HelloWorld示例(Spring Boot 2.x 快速入门(上)HelloWorld示例)( Spring Boot 2.x 快速入门(下)HelloWorld示例详解)两篇的学 ...

  5. Spring+Struts+Mybatis+Shiro整合配置

    Jar包

  6. 【SpringBoot技术专题】「权限校验专区」Shiro整合JWT授权和认证实现

    本章介绍一下常用的认证框架Shiro结合springboot以及集合jwt快速带您开发完成一个认证框架机制. Maven配置依赖 <dependency> <groupId>o ...

  7. Shiro第四篇【Shiro与Spring整合、快速入门、Shiro过滤器、登陆认证】

    Spring与Shiro整合 导入jar包 shiro-web的jar. shiro-spring的jar shiro-code的jar 快速入门 shiro也通过filter进行拦截.filter拦 ...

  8. springboot,vue,shiro整合 关于登录认证功能

    首先是session问题 传统session认证 http协议是一种无状态协议,即浏览器发送请求到服务器,服务器是不知道这个请求是哪个用户发来的.为了让服务器知道请求是哪个用户发来的,需要让用户提供用 ...

  9. shiro(四)项目开发中的配置、

    配置拦截.过滤.验证请求 <!-- shiro --> <!-- 項目自定义的Realm --> <bean id="ShiroRealm" clas ...

随机推荐

  1. [Algorithm] Find first missing positive integer

    Given an array of integers, find the first missing positive integer in linear time and constant spac ...

  2. Python模拟登录wap版百度贴吧+自己主动回贴

    模拟登录的原理都差点儿相同.大致都是这样: 打开首页获取相关cookie: 提交登陆表单(即username与password). 确认是否登录成功. 假设想了解更具体的原理与相关知识,推荐到具体解释 ...

  3. perl install-module.pl DateTime 执行无效问题的解决

    运行./checksetup.pl,总说DateTime模块需要安装,但是执行提示的perl install-module.pl DateTime 多次也还是说DateTime模块需要安装. 在神奇的 ...

  4. 封装scrollView 循环滚动,tableViewCell(连载) mvc

    封装 封装 封装 ... 封装的重要性太重要了 给大家在送点干货 从一个项目中抽取出来的.和大家一起分享 封装scrollView 循环滚动.tableViewCell(连载) 明天还会更新 tabl ...

  5. U盘去保护方法

    一.基本信息 U盘大小是16G的,估计用了2G的空间存储,没有任何开关设置,格式化或写入时提示被写保护: U盘放到任何一台电脑上都是只能读不能写,说明与电脑无关,用了各种U盘修复程序都无效: 二.一般 ...

  6. 如何快速去掉.svn文件夹?

    我们在工程的协作开发过程中,常用的是 svn , 有时我们需要一个干净的 网站版本,没有 .svn 这些文件夹记录的版本传到服务器上使用,自己一个个去文件删除的话也太累了,这时我们就用到以下功能,用c ...

  7. A Package Manager for Xcode -Xcode模板管理工具Alcatraz使用

    一款功能强大的Xcode模板管理工具 一:安装之后的效果图 二:安装 1:先关闭 xcode 2:  打开 terminal 3:  复制粘贴运行如下代码 mkdir -p ~/Library/App ...

  8. 算法笔记_110:第四届蓝桥杯软件类省赛真题(JAVA软件开发高职高专组部分习题)试题解答

     目录 1 猜年龄 2 组素数 3 第39级台阶 4 核桃的数量 5 打印十字图 6 买不到的数目   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题: ...

  9. 优化iOS程序性能的25个方法

    1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自己主动引用计数)和iOS5一起公布.它避免了最常见的也就是常常是因为我们忘记释放内存所造成的内存泄露.它自己 ...

  10. OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式

    来自:http://cn.openerp.cn/openerp_import_image_by_xmlrpc/ 每当夏秋之交,我们都有展会,展会完后,都有很多的新的潜在客户要添加,我们收了一大堆名片, ...