gpt4 book ai didi

java - Spring Security和Struts2如何整合

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:40:25 26 4
gpt4 key购买 nike

关于这个问题,我已经进行了大量的谷歌搜索,但到目前为止,我找不到任何关于集成 Struts2 和 Spring Security 的教程。

我的问题是如何集成 Spring Security 和 Struts2?

我希望限制某些操作或页面的地方,例如管理页面/url 只能由管理员访问,以及其他类似的东西,如果用户试图访问该页面,他或她将被重定向到另一个页面。

最佳答案

假设您需要保护可在 /admin/* 路径上访问的内容。您需要在 web.xml 中声明 Spring Security Filter,Struts 过滤器应该在后面,这样如果您正在访问 /admin,它将由 Spring Security 处理首先请求,并且能够根据用户的角色让它通过或阻止它:

<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

然后声明您的 spring 安全上下文:

<http>
<intercept-url pattern="/*" filters="none" />
<intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<form-login login-page="/login" />
<logout logout-url="/logout" />
</http>

我建议您使用 struts2-convention 插件,这样像 /login 这样的 URL 会自动绑定(bind)到一个名为 com.foo.bar 的类.actions.LoginActionLogoutAction

相同

现在 /admin/* 下的内容应该由 Spring Security 保护,其余的应该直接转发给 Struts2 过滤器。

最后,在您的 JSP 中,您可以检查某人是否是管理员:

<sec:authorize access="hasRole('ROLE_ADMIN')">
<p>you are an admin</p>
</sec:authorize>

其余部分可以在任何 Spring Security 教程中找到。真正重要的是过滤器声明的顺序,spring security 必须在第一位。

编辑: google 搜索,也有this link这对你有帮助。

关于java - Spring Security和Struts2如何整合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com