如何集成Spring Security和Struts2

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

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

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

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

  springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy   springSecurityFilterChain /admin/*   struts2 org.apache.struts2.dispatcher.FilterDispatcher   struts2 /*  

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

        

我建议您使用struts2-convention插件,以便像/login这样的URL自动绑定到名为let的com.foo.bar.actions.LoginAction这个类。 LogoutAction

现在Spring Security会保护/admin/*下的内容,其余的应该直接转发到Struts2filter。

最后,在JSP中,您可以检查某人是否为Admin:

  

you are an admin

其余的可以在任何Spring Security教程中找到。 真正重要的是filter声明的顺序,弹簧安全必须是第一位的。

编辑:在谷歌搜索,也有这个链接可以帮助你。

这实际上非常简单 – Spring Security与Web框架无关:)

您需要定义Spring Securityfilter链 – 这是一个应该映射到所有请求的Javafilter。 filter将检查路径是否需要任何特权,如果是,则检查用户是否已登录并具有这些特权。

简单的设置示例。

web.xml(插入到现有的,与struts配置一起):

  contextConfigLocation  classpath:META-INF/spring/applicationContext-security.xml    org.springframework.web.context.ContextLoaderListener   springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy   springSecurityFilterChain /*  

Spring安全配置(在contextConfigLocation参数中的web.xml中提到的文件中):

            

您可以按照自己的意愿扩展它 – Spring的文档写得很好

您可以进行更简单的自动配置:

    

以上选项可根据请求路径保护您的Web应用程序。 您可能也希望确保操作安全。 添加以下内容可以帮助您:

  

让我知道你需要什么function,我可以指出你的方向。 请记住,命名空间配置不是灵丹妙药 – 如果您需要一个非常自定义的解决方案,您可能需要自己配置所有的spring bean,但文档很好地解释了这一点。