Tôi đang cố gắng để có được Tuckey UrlRewriteFilter để dọn dẹp URL cho webapp của tôi. Một vấn đề tôi gặp phải là khi spring-security thông báo rằng một người dùng nặc danh đang cố gắng truy cập một tài nguyên được bảo vệ, nó chuyển hướng đến một URL bao gồm đường dẫn servlet.Ghi lại URL chuyển hướng bảo mật mùa xuân
Những gì tôi muốn là, bởi ví dụ:
> GET http://localhost:8080/my-context/protected-resource
< Location: http://localhost:8080/my-context/login
Những gì tôi hiện đang nhận được là:
tài liệu> GET http://localhost:8080/my-context/protected-resource
< Location: http://localhost:8080/my-context/-/login
liên quan tôi đã tìm thấy cho đến nay:
DefaultRedirectStrategy, mà thực hiện chuyển hướng thực tế trong câu hỏi: http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/web/DefaultRedirectStrategy.html. Nó có một thuộc tính contextRelative mà là hấp dẫn nhưng tôi không nghĩ là sẽ cắt nó, nếu tôi thậm chí có thể tìm thấy một cách để cấu hình nó.
Một bài viết trên blog rằng đã giúp tôi có được này cho đến nay: http://nonrepeatable.blogspot.com/2009/11/using-spring-security-with-tuckey.html
Những gì tôi muốn biết là:
- Can/Tôi nên thuyết phục Tuckey để viết lại tiêu đề Location. < quy tắc đi > dường như không giúp ích gì ở đây.
- Tôi có thể/bằng cách nào đó tôi có thể tinh chỉnh cấu hình SS để phát ra URL được viết lại hay không. Tôi không nghĩ rằng điều này là khá gọn gàng, vì nó sẽ phá vỡ nếu viết lại đã bị vô hiệu hóa.
web.xml
trông giống như
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>LogLevel</param-name>
<param-value>log4j</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<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>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<servlet>
<servlet-name>my-servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>psms</servlet-name>
<url-pattern>/-/*</url-pattern>
</servlet-mapping>
urlrewrite.xml
trông giống như:
<urlrewrite>
<rule>
<from>^/(.*)$</from>
<to>/-/$1</to>
</rule>
</urlrewrite>
applicationContent-security.xml
trông giống như:
<http auto-config="true">
<!-- allow GET requests to /login without authentication -->
<intercept-url pattern="/-/login" method="GET" filters="none"/>
<intercept-url pattern="/-/admin/**" access="ROLE_ADMIN"/>
<intercept-url pattern="/-/**" access="ROLE_USER"/>
<form-login login-page="/-/login"
login-processing-url="/-/login.do"
authentication-failure-url="/-/login?login_error"
default-target-url="/-/index"
always-use-default-target="true"/>
<logout logout-url="/-/logout"
logout-success-url="/-/login"/>
<access-denied-handler error-page="/-/access-denied"/>
</http>
và đặt thuộc tính trang đăng nhập thành/đăng nhập? – rodrigoap