Shiro 教程,关于最近反应的相关异常问题,解决方法合集。
Shiro + SSM(框架) + Freemarker(jsp)讲解的权限控制Demo,还不赶快去下载?
前言:本教程适合有一定基础的 Java程序员使用,如果对 Shiro 有一定的了解,过程中会很快接受,建议在使用 Shiro教程Demo的时候,建议直接Maven,教程Demo中没有对Maven过多的依赖,只有一个依赖包的管理,如果对Maven不熟悉,你可以安装一个MyEclipse8.5,自带Maven环境,本站有 在线生成MyEclipse注册码。注意,开始不管你技术多牛,不管我的文档写的有多么不好,都建议你看完,这样大概心里有个数,Demo里有什么功能,哪些地方怎么实现的?都知道个大概。
Shiro教程地址:https://www.sojson.com/shiro (含项目下载地址)。
本篇叙述的是问题集合,以及相关解决方案,如果你在使用本站提供的 SSM + Shiro + Redis + Freemarker 的Shiro教程 中遇到问题,以及解决方案,可以联系站长告知,我会第一时间更新到此篇博客之中。
一、Shiro 教程 Demo 环境准备。
环境在https://www.sojson.com/shiro 中说的很详细,我Ctrl + C
过来。
开发工具: Eclipse 、 MyEclipse 、 Idea 等等。
依赖第三方:Mysql 5.0
以上、 Redis (v2.8左右)。
需要的配置:jdbc.properties
中配置 Mysql 的信息、spring-cache.xml
配置 Redis 配置,如果是默认配置,就不用换,Redis Windows
环境安装教程:https://www.sojson.com/blog/110.html。
这里特别强调一下,开发工具的问题。
IDEA:很多同学用IDEA
的时候出现了问题,主要出现在2个地方,一个是 XML
打包不进去,还有一个是Maven
的问题,但是如果对IDEA
环境比较熟悉,那就没这个问题。
Eclipse:最新版本有问题,其实也是在打包和 Maven 上。不是最新版本,亲测好使没毛病。
Myecilpse8 ~ Myecilpse 10 :亲测好使,没毛病。
我开发的工具版本:
Eclipse:Eclipse IDE for Java Developers —— Version: Helios Service Release 2
,后面由于家里环境是MyEclipse8.5,后面是采用MyEclipse8.5,开发完成的;
Mysql:版本是5.6
,用的是阿里的RDS
服务,底层是Mysql5.6
。
Redis:版本是2.8.2400 / 64bit
。
二、Redis(Cache)问题。
自查:有没有安装redis,有没有成功启动,如果有,请确认Redis是否IP和端口有改变,Shiro 教程Demo中配置如下:
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg index="0" ref="jedisPoolConfig"/>
<constructor-arg index="2" value="6379"/><!--默认端口-->
<constructor-arg index="3" value="5000"/><!--链接超时时效-->
<constructor-arg index="1" value="127.0.0.1"/><!--默认本地ip地址-->
</bean>
这些都是默认的配置,请核对一遍。如果没问题,请把配置改成如下的配置:
<!-- redis 配置,也可以把配置挪到properties配置文件中,再读取 -->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg index="0" ref="jedisPoolConfig" />
<constructor-arg index="2" value="6379" name="port" type="int"/>
<constructor-arg index="3" value="5000" name="timeout" type="int"/>
<constructor-arg index="1" value="127.0.0.1" name="host" type="java.lang.String"/>
</bean>
这种 arguments
构造的方式,之前配置有缺点。
因为参数类型不一致,有时候jar
和环境的问题,导致参数根据index
对应,会处理问题,
理论上加另一个 name
,就可以解决,现在把name
和 type
都加上,更保险。
那缓存到此基本没问题,还有问题,加群交流。
新版本 Shiro_SSM_0.2 会解决这个问题。
三、登录问题。
现有现象:
登录后提示 “登录成功” ,但是没跳转,也反应,或者
404
了。- 输入帐号密码后,点击登录,没有任何反应。
登录的时候,提示“登录成功”,跳转后,又回到登录页面了。
对应解决:
- 查看前后台是否报错,这时候应该是Redis有问题,要么后台其他报错了。
项目是否部署到
root
,也就是根目录,因为项目中没有basePath
,所以有问题,新版本会解决这个问题。- 这个问题应该是写入
Cookie
的问题,项目里有二个这个配置(spring-shiro.xml
)。
<!-- 会话Cookie模板 -->
<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<!--cookie的name,我故意取名叫xxxxbaidu -->
<constructor-arg value="v_v-s-baidu"/>
<property name="httpOnly" value="true"/>
<!--cookie的有效时间 -->
<property name="maxAge" value="-1"/>
<!-- 配置存储Session Cookie的domain为 一级域名 -->
<property name="domain" value=".itboy.net"/>
</bean>
<!-- 用户信息记住我功能的相关配置 -->
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="v_v-re-baidu"/>
<property name="httpOnly" value="true"/>
<!-- 配置存储rememberMe Cookie的domain为 一级域名 -->
<property name="domain" value=".itboy.net"/>
<property name="maxAge" value="2592000"/><!-- 30天时间,记住我30天 -->
</bean>
里面有下面配置,为 .itboy.net 项,删除即可。
<!-- 配置存储rememberMe Cookie的domain为 一级域名 -->
<property name="domain" value=".itboy.net"/>
有其他问题,或者解决了,请联系群主,我把过程及解决方案加上....
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/164.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。