
shiro
猪脚踏浪
这个作者很懒,什么都没留下…
展开
-
Shiro 设置session超时时间
系统默认超时时间是180000毫秒(30分钟),可以通过下面2中方式设置自定义的超时时间。一: 配置文件 二:通过apiShiro的Session接口有一个setTimeout()方法,登录后,可以用如下方式取得sessionSecurityUtils.getSubject().get原创 2017-04-06 23:48:09 · 52466 阅读 · 7 评论 -
shiro 减少用redis实现的自定义SessionDAO的doUpdate的调用次数
由于SimpleSession lastAccessTime更改后也会调用SessionDao update方法,更新的字段只有LastAccessTime(最后一次访问时间),由于会话失效是由Redis数据过期实现的,这个字段意义不大,为了减少对Redis的访问,降低网络压力,实现自己的Session,在SimpleSession上套一层,增加一个标识位,如果Session除lastAccess原创 2017-07-08 14:20:03 · 4934 阅读 · 3 评论 -
shiro 使用redis 频繁请求获取session的问题
shiro 框架获取 session里面的属性时,每次都去拿取session,一次请求中会有很多次 获取 session 里面的属性,所以有很多次,这个如果是本地缓存到无所谓,因为本地缓存是直接放置session对象的,但是如果是共享缓存比如 redis ,这个就郁闷了,每次获取session都要从redis 里面获取然后反序列化。操作session属性导致频繁访问redis这个大概是没办法避免了原创 2017-07-07 23:57:58 · 9850 阅读 · 12 评论 -
执行Shiro logout后,报如下错误: org.apache.shiro.session.UnknownSessionException: There is no session with id
严重: Servlet.service() for servlet [spring] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: org.apache.shiro.session.UnknownSess原创 2017-07-08 08:09:35 · 5981 阅读 · 2 评论 -
shiro 拦截器
Shiro使用了与Servlet一样的Filter接口进行扩展1、NameableFilterNameableFilter给Filter起个名字,如果没有设置默认就是FilterName;还记得之前的如authc吗?当我们组装拦截器链时会根据这个名字找到相应的拦截器实例; 2、OncePerRequestFilterOncePerRequestFilter用于防止多次执原创 2017-07-08 14:12:29 · 504 阅读 · 0 评论 -
shiro控制用户唯一登录
同一账户可能被一个人或多个人在多个客户端,或多个浏览器中访问同一系统,我们可能希望只允许一个帐号在一处地方登陆,其他地方登陆都踢掉。使用了Cache缓存用户名和会话id之间的关系;如果量比较大可以考虑如持久化到数据库/redis中;另外此处没有并发控制的同步实现,可以考虑根据用户名获取锁来控制,减少锁的粒度。/** * 控制并发登录人数 */public class Ki原创 2017-06-28 15:33:00 · 4074 阅读 · 1 评论 -
在shiro当设置sessionIdCookie配置的domain和访问url不匹配时,每次请求都会重新生成session
在Servlet容器中,默认使用JSESSIONID Cookie维护会话如下配置了domain <!-- 设置Cookie名字, 默认为: JSESSIONID 问题: 与SERVLET容器名冲突, 如JETTY, TOMCAT 等默认JSESSIONID, 当跳出SHIRO SERVLET时如ERROR-PAGE容器会为JSESSIONID重原创 2017-06-28 12:56:26 · 12638 阅读 · 0 评论 -
shiro的会话工厂SessionFactory
SessionFactory是创建会话的工厂,根据相应的Subject上下文信息来创建会话;默认提供了SimpleSessionFactory用来创建SimpleSession会话。public interface SessionFactory { /** * 创建一个新的session */ Session createSession(SessionCo原创 2017-06-28 11:34:31 · 2528 阅读 · 0 评论 -
shiro的会话验证调度器SessionValidationScheduler
shiro提供了会话验证调度器,用于定期的验证会话是否已过期,如果过期将停止会话;出于性能考虑,一般情况下都是获取会话时来验证会话是否过期并停止会话的;但是如在web环境中,如果用户不主动退出是不知道会话是否过期的,因此需要定期的检测会话是否过期,Shiro提供了会话验证调度器SessionValidationScheduler。 Sh原创 2017-06-28 11:19:51 · 18334 阅读 · 7 评论 -
shiro的会话存储/持久化SessionDAO
Shiro提供SessionDAO用于会话的CRUD,即DAO(Data Access Object)模式实现:原创 2017-06-28 11:04:09 · 18358 阅读 · 3 评论 -
shiro的会话管理器SessionManager
SessionManager会话管理器管理着应用中所有Subject的会话的创建、维护、删除、失效、验证等工作。public interface SessionManager { Session start(SessionContext context); //启动会话 Session getSession(SessionKey key) throws SessionExce原创 2017-06-28 00:29:28 · 4823 阅读 · 0 评论 -
shiro的过虑器
过滤器简称 对应的java类anon org.apache.shiro.web.filter.authc.AnonymousFilterauthc org.apache.shiro.web.filter.authc.FormAuthenticationFilterauthcBasic org.apache.shiro.web.filter.authc.BasicHttpAuthenti原创 2017-06-30 00:29:27 · 307 阅读 · 0 评论 -
Shiro限制登录尝试次数
要限制用户登录尝试次数,必然要对用户名密码验证失败做记录,Shiro中用户名密码的验证交给了CredentialsMatcher 所以在CredentialsMatcher里面检查,记录登录次数是最简单的做法。我们用Ehcache来记录用户登录次数的计数,继承HashedCredentialsMatcher,加入缓存,在每次验证用户名密码之前先验证用户名尝试次数,如果超过5次就抛出尝试原创 2017-06-30 00:24:43 · 9386 阅读 · 7 评论 -
Shiro的URL匹配规则(AntPathMatcher)
例子[java] view plain copy... [urls] /index.html = anon /user/create = anon /user/** = authc /admin/** = authc, roles[administrator] /rest/** = authc, rest原创 2017-06-29 15:21:05 · 3297 阅读 · 0 评论 -
shiro会话监听器
会话监听器用于监听会话创建、过期及停止事件:public class MySessionListener implements SessionListener { @Override public void onStart(Session session) {//会话创建时触发 System.out.println("会话创建:" + session.getId原创 2017-04-04 18:56:51 · 3923 阅读 · 0 评论 -
Shiro关于JSESSIONID失效报错问题
错误信息2017-03-24 13:42:20,381 [http-bio-8090-exec-4] [org.apache.shiro.web.servlet.SimpleCookie]-[DEBUG] Found 'JSESSIONID' cookie value [7353DD0322589E2DF6C46D0B00E746A7]2017-03-24 13:42:20,381原创 2017-03-24 14:02:25 · 7987 阅读 · 2 评论 -
shiro添加注解@RequiresPermissions不起作用
方法一:在spring-mvc.xml中加入以下代码就可以了(一定要写在最先加载的xml中,写在后面加载的xml中也不起作用)。bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostPro原创 2017-12-09 15:59:04 · 1808 阅读 · 1 评论