前天我的学生在学习shiro的时候,学着学着突然发现和spring集成的时候不能进入自定义realm了,今天camel帮你解决这个问题。
问题如下:
需求是:登录我写的网站的任何一个url都会默认跳到用户登录页面,
当我打开服务器,输入url,确实进入登录页面,然而当我输入正确的账号密码的时候还是依旧在登录页面。
这个问题的原因是shrio的配置文件有问题
首先
<property name="securityManager" ref="securityManager" />
<property name="loginUrl" value="/login.action"/>
<property name="successUrl" value="/index.action"/>
<property name="unauthorizedUrl" value="/refuse.jsp"/>
这3个value值最好都用具体的动作,不要用jsp页面,因为这主要起跳转作用。
最重要的是下面的拦截链!!!!:
原来我写的是这样的
<property name="filterChainDefinitions">
<value>
/**= authc
</value>
</property>
这样把所有的url都拦截了,包括jsp页面
这样我每次做登录请求的时候,首先拦截的是jsp页面(根本不会拦截到登录请求,怎么可能进入realm呢),发现需要跳转登录页面,然后就陷入死循环。
修改后!!!:
<property name="filterChainDefinitions">
<value>
/login.jsp =anon
/login.action=authc
/** =authc
</value>
</property>
这样配置 就放过了login.jsp页面的拦截,只拦截请求动作,这样就不会陷入死循环,果然进入了自定义的realm。
总结:必须的有拦截authc,才能出发认证
网友评论