How to use Spring Security 3 on Struts 2?

I read many tutorials on using Spring Security 3 on Struts 2. But I can't get it to work: /.

I can’t find the “Dummy Walkthrough” about implementing this framework on Struts 2.

Here is what I have:

web.xml:

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <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> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <display-name>cv</display-name> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>example/HelloWorld.jsp</welcome-file> </welcome-file-list> </web-app> 

security.xml

 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context/spring-context-2.5.xsd" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/context/spring-context-2.5.xsd/spring-spring-context-2.5.xsd-3.1.1.RELEASE.xsd "> <?xml version="1.0" encoding="UTF-8"?> <b:beans xmlns="http://www.springframework.org/schema/security" xmlns:b="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"> <http realm="Project Realm" auto-config="true" use-expressions="true"> <intercept-url pattern="/auth/**" filters="none"/> <intercept-url pattern="/**" access="hasAnyRole('ROLE_ADMIN','ROLE_USER')"/> <form-login login-page="/auth/login.jsp" authentication-failure-url="/auth/login.jsp?login_error=1"/> <logout logout-success-url="/auth/login.jsp"/> <remember-me /> </http> <http> <intercept-url pattern="/login*" filters="none" /> <intercept-url pattern="/css/**" filters="none" /> <intercept-url pattern="/img/**" filters="none" /> <intercept-url pattern="/search.action*" access="ROLE_ADMIN" /><!-- Never reach --> <intercept-url pattern="/user/**" access="ROLE_ADMIN" /><!-- Never reach --> <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> <form-login login-page="/login.action" /> <logout logout-url="/logout.action" /> </http> <authentication-manager> <authentication-provider> <user-service> <user name="admin" password="admin" authorities="ROLE_ADMIN"/> <user name="customer" password="customer" authorities="ROLE_USER"/> </user-service> </authentication-provider> </authentication-manager> </b:beans> </beans> 

And my HelloWorld.jsp

 <body> <h1>Welcome!</h1><br /> <sec:authorize access="isAnonymous()"> This session will be visible to an admin only.<br/> You are an Administrator.<br/> </sec:authorize> <sec:authorize access="hasRole('ROLE_USER')"> This session will be visible to an Customer only.<br/> You are an Customer.<br/> </sec:authorize> ${HelloMessage}<br /> <a href="<c:url value="/j_spring_security_logout"/>">Logout</a> </body> 

I want to check how privileges work using the "isAnonymous" tag showing this block of text, but I can't get it to work

: (

+2
source share
1 answer

You need to add the Spring Security Filter Chain to web.xml.

 <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>/*</url-pattern> </filter-mapping> 

This happens after the Struts filter. This will allow Spring Security to check / block the request before Struts sends the request.

Assuming that the user is allowed access to the content, Spring Security will configure a SecurityContext object that allows the use of JSP tags.

+2
source

All Articles