struts2和shiro整合遇到问题

发布于 2021-11-23 09:13:12 字数 946 浏览 885 评论 19

我在整合struts2+shiro的时候遇到一些问题,求解答,谢谢

假设jsp form提交的action是login.action,struts2中有login的action处理定义,shiro中也配置有相应的项目,类似如下:


<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
	 <property name="securityManager" ref="securityManager"/>
	    
	 <property name="loginUrl" value="/public/login.jsp" />
        <property name="successUrl" value="/public/index.jsp" />
        <property name="unauthorizedUrl" value="/public/error.jsp" />
        
	    <property name="filterChainDefinitions">
	        <value>
	            login = anon
	            /** = anon
	        </value>
	    </property>
	</bean>
我现在在提交之后总是给struts2定义的那个login.action处理,而不是交由shiro处理?


还有shiro相关的配置我也不太清楚,麻烦给详细说明下,特别是loginUrl及filterChainDefinitions部分。

谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(19

混吃等死 2021-11-24 00:58:54

Hi, 我试过将/login=anon去掉,不过还是同样的问题,现在看,是我在submit之后有跳转到/public/login.jsp了,而我自定义的MyRealm中的Authentication并没有执行

命硬 2021-11-24 00:58:54

从我目前测得情况看,就是form提交之后并没有走到shiro中执行Authentication,请问这个还需要其他配置吗,或者shiro这边如何查看log。thx

谁的新欢旧爱 2021-11-24 00:58:54

谢谢,我先研究下

葬花如无物 2021-11-24 00:58:54

loginUrl设为自己的login.action地址。如果成功的话,该地址的POST请求会被shiro拦截并执行登陆业务。

还有/login = anon这段不需要。

因为authc处理的就是登陆授权相关,它有两个逻辑

如果当前访问的是登陆页,则POST时执行登陆逻辑

如果当前不是登陆页,检查用户是否有权限,没有则跳转到登陆页

冷清清 2021-11-24 00:58:53

回复
表单的action地址不填写。表示提交给自己,method用post,必要的属性是username和password

天涯离梦残月幽梦 2021-11-24 00:58:53

回复
login.jsp就是啊

浅沫记忆 2021-11-24 00:58:53

回复
我给的第一句提示没有看吗?首先你得把shiro的loginUrl指向一个有登陆表单的页面

一笔一画续写前缘 2021-11-24 00:58:52

谢谢,这个我之前理解有问题。

南汐寒笙箫 2021-11-24 00:58:52

loginUrl是没有登录跳转的url,unauthorizedUrl是没有权限跳转的url

风柔一江水 2021-11-24 00:58:52

loginUrl设为自己的login.action地址。如果成功的话,该地址的POST请求会被shiro拦截并执行登陆业务。

还有/login = anon这段不需要。

因为authc处理的就是登陆授权相关,它有两个逻辑

如果当前访问的是登陆页,则POST时执行登陆逻辑

如果当前不是登陆页,检查用户是否有权限,没有则跳转到登陆页

柳絮泡泡 2021-11-24 00:58:42

不过现在还是有个问题存在,就是我在login.jsp进行submit之后并没调用自己实现的Realm的方法。

成熟的代价 2021-11-24 00:58:35

loginUrl是没有登录跳转的url,unauthorizedUrl是没有权限跳转的url

反目相谮 2021-11-24 00:55:40

引用来自“SoSo_NX”的答案

anon是匿名,不会拦截,换成authc试试

归属感 2021-11-24 00:42:26

anon是匿名,不会拦截,换成authc试试

坏尐絯 2021-11-23 22:07:49

我在web.xml中已经将shiro相关部分放到struts2之前了,还是不行

掩饰不了的爱 2021-11-23 20:38:22

如果是struts2先拦截到 那就进入struts2的action

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文