NutzCN Logo
问答 shiro.ini过滤器链不向下执行
发布于 3046天前 作者 Lewe© 2290 次浏览 复制 上一个帖子 下一个帖子
标签:

shiro.ini

/**               = autol,authc
//autol 代码
public class AutoLoginFilter extends AccessControlFilter {

    private static final Log log = Logs.get();

    @Override
    public boolean onPreHandle(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception {

        Subject subject = getSubject(request, response);
        if(subject == null) {
            return super.onPreHandle(request, response, mappedValue);
        }
        //自动登陆
        autoLogin(subject);
        return super.onPreHandle(request, response, mappedValue);
    }

    private void autoLogin(Subject subject) {
       //...
    }

    @Override
    protected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object o) throws Exception {
        return true;
    }

    @Override
    protected boolean onAccessDenied(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
        return true;
    }
}

20 回复

执行完autol 不执行authc

@ysysdzz autoLogin后面的两个方法怎么都返回true

来自炫酷的 NutzCN

@ysysdzz 那就继承这个类

autoLogin要做啥效果

来自炫酷的 NutzCN

@wendal 判断isRemembered, 然后自动登录。。。继承不行啊,两个要单独使用。。
如果要继承的话就得在单独写一个自动登陆的flter ,因为有的url不需要authc

@ysysdzz 参考formFilter

来自炫酷的 NutzCN

@wendal 又测试了几次发现是有时会向下执行,有时不会。。。
比如:我打开浏览器 把URL粘贴上去回车,不会执行
再敲一次回车,,,执行了。。。。。。。。。。。。。。。。懵逼了

第一次的时候完成了自动登录嘛

话说,自动登录完,跳转一下不就完了,还需要干啥?

来自炫酷的 NutzCN

@wendal 不是。。好像是URL缓存吧,第一次自动登录走没走请求的Module(controller)里面打短点都没走

@ysysdzz 断点不是应该打在filter吗?然后看看执行了啥

来自炫酷的 NutzCN

@wendal tomcat服务器关了。。打开浏览器 粘贴url http://localhost:8080/xxxx 回车。。。正常访问。。
再回车。。无法访问
卧槽。肯定是缓存了

@ysysdzz 到底进没进filter

来自炫酷的 NutzCN

@wendal 可以进filter没问题。就是打开浏览器第一次访问的时候走的缓存。再请求一次就好了

@ysysdzz 缓存,指的是啥缓存,cookie?

来自炫酷的 NutzCN

@wendal 不是。。不知道是啥。。反正我把tomcat都关了。。打开浏览器第一次访问那个url还是能访问

@wendal 加上这些东西没管用


@wendal

<meta http-equiv="Pragma"content="no-cache">
    <meta http-equiv="Cache-Control" content="no-siteapp">
    <Meta http-equiv=Expires Content="0">

@ysysdzz 所以我问有没有进filter

如果没进,浏览器根本没请求

如果进了,那就是shiro处理过东西了,所以第二次访问的效果不一样

来自炫酷的 NutzCN

@wendal 是没请求。。应该是浏览器把那个Url 下载(缓存)到本地了。

解决了由于用的return "->:/test1.html";。
加了

<meta http-equiv="Cache-Control" content="no-store">
添加回复
请先登陆
回到顶部