如何集成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,但文档很好地解释了这一点。