过期时间如何设置我回去查询
现在的问题是 Session过期之后他不会自动跳到注册页面
也就是说说 不会认为是验证异常
何解?
@wendal 我还在默认跳转上加了@RequiresUser的
结果session过期没有反应。。。
我通过
SecurityUtils.getSubject().getSession(true).setAttribute("currentUser", user);
这种方式存的session,过期之后Beetl前台session.currentUser以及后台使用session.get都是null的
然而并不会跳
我存currentUser是在NutDaoRealm里
@qq_74967e40 加@SessionBy了吗? 让shiro的session替换容器的session机制,在NutFilter作用域内
@SessionBy(ShiroSessionProvier.class)
public class MainModule
在最新的shiro插件里面有
来自炫酷的 NutzCN
另外,debug一下ShiroProcessor,看看有没有被调用到,因为就是它负责读取shiro的注解,并判断是否允许通过
来自炫酷的 NutzCN
@wendal 我用了最新的b53,加上@SessionBy(ShiroSessionProvider.class)还是一样的。
页面上的session.CurrentUser已经过期了
并没有跳转
你说的ShiroProcessor在你的jar里 弱弱问一句 如何debug啊?
关联源码就可以打断点
来自炫酷的 NutzCN
我猜测的原因:
- 没有经过入口方法, 那么shiro的注解自然也不会生效
- 用了rememberMe, 自动登陆了,但没有经过realm,所以session里面没有你需要的值
- 没有配置ShiroProcessor, 所以shiro也不会生效
其实ajax也可以跳,关键是看你的shiro拦截后的跳转是什么样的,比如,shiro鉴权不过跳的是个403的页面,那么ajax返回类型json一定是报错的,那么就可以在
$.post().fail(function(){//这里来处理跳转})
@wendal 我跟了NutShiroProcessor的process方法,我发现在match是true(也就是说方法是被shiro控制?)的情况下
session过期,并没有引发任何异常
public void process(ActionContext ac) throws Throwable {
if (match) {
try {
Object cu = ac.getRequest().getSession().getAttribute("currentUser");
System.out.println("session:"+cu);//cu=null
Object cu2 = SecurityUtils.getSubject().getSession(true).getAttribute("currentUser");
System.out.println("session:"+cu2);//cu2=null
interceptor.assertAuthorized(new NutShiroInterceptor(ac));
} catch (Exception e) {
System.out.println(e.getMessage());//无打印
whenException(ac, e);
return;
}
}
doNext(ac);
}
@wendal 我手动抛了一个没有权限的异常,暂时OK,观察中。。
不过有个小问题。
我后台重编译一下,eclipse页面就404,需要清空浏览器缓存才行。。。
因为shiro操作了cooki记录了什么吗?
@wendal 还有个小建议。。
每次我发帖 都要白屏几秒钟。。。
是我网速的问题吗?