spring集成shiro不进入自定义realm

/ 技术 / 无站内评论 / 477浏览

前天学习shiro的时候,学着学着突然发现和spring集成的时候不能进入自定义realm了,查了两天也没找到原因,后来加了一位大神,帮我解决了这个问题,在这里非常感谢。 问题如下: 需求是:登录我写的网站的任何一个url都会默认跳到用户登录页面, 当我打开服务器,输入url,确实进入登录页面,然而当我输入正确的账号密码的时候还是依旧在登录页面。 这就奇怪了,我赶紧去看看教程的配置,没毛病啊,我又去百度了一下配置,也没毛病,而且还发现很多人有我这样的问题(在这里鄙视一下发问题的楼主,自己说完问题解决了,也不告诉其他人)。纠结两天之后加了一位大神的QQ,给我解决了这个问题,在此发篇文章,希望能解决后来者的问题。 这个问题的原因是shrio的配置文件有问题 首先

<property name="securityManager" ref="securityManager" />
<!-- loginUrl认证提交地址,如果没有认证将会请求此地址进行认证,请求此地址江油formAuthenticationFilter进行拦截表单认证-->
<property name="loginUrl" value="/login.action"/>
<!--认证成功统一跳转到first.action,建议不配置-->
<property name="successUrl" value="/index.action"/>
<!--通过unauthorizedUrl指定没有权限操作时跳转页面-->
<property name="unauthorizedUrl" value="/refuse.jsp"/>
这3个value值最好都用具体的动作,不要用jsp页面,因为这主要起跳转作用。
最重要的是下面的拦截链!!!!:
原来我写的是这样的
<property name="filterChainDefinitions">
    <value>
        <!-- /所有的url都要登录-->
        /**= authc

    </value>
</property>

后来经过高人指点发现我这样把所有的url都拦截了,包括jsp页面,这样我每次做登录请求的时候,首先拦截的是jsp页面(根本不会拦截到登录请求,怎么可能进入realm呢),发现需要跳转登录页面,然后就陷入死循环。 修改后!!!:

<property name="filterChainDefinitions">
    <value>
        <!-- /所有的url都要登录-->
        /login.jsp =anon
        /login.action=authc
	/** =authc
    </value>
</property>

这样配置 就放过了login.jsp页面的拦截,只拦截请求动作,这样就不会陷入死循环,果然进入了自定义的realm。 看到成功了,我差点给大神跪下。超级超级感谢大神!!不知道他csdn叫什么名字

召唤蕾姆
琼ICP备18000156号

鄂公网安备 42011502000211号