Tôi có một ứng dụng web sử dụng Shiro để xác thực. Các bộ phận có liên quan của web.xml và shiro.ini là:Làm thế nào tôi có thể chuyển hướng các yêu cầu đến một cấu hình đăng nhập ShiroUrl nếu người dùng đã được xác thực?
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
và
[main]
authc.loginUrl = /authoring/login.html
authc.successUrl = /authoring
logout.redirectUrl = /authoring/login.html
[users]
foo = foo
[urls]
/authoring/logout = logout
/authoring/** = authc
Shiro chặn một cách chính xác tất cả các yêu cầu từ khách hàng không xác thực và chuyển hướng đến các loginUrl cấu hình (và sau đó chuyển tiếp cho họ trên trang được yêu cầu sau khi xác thực thành công). Điều tôi muốn xảy ra là, nếu một khách hàng được xác thực thực hiện yêu cầu rõ ràng tới /authoring/login.html, hãy chuyển hướng đến/authoring. Điều này sẽ CHỈ xảy ra nếu khách hàng được xác thực.
Ví dụ: suy nghĩ về cách Gmail hoạt động - cố truy cập mail.google.com (hoặc thậm chí https://accounts.google.com/ServiceLogin) khi bạn đã đăng nhập chuyển hướng bạn đến hộp thư đến. Điều này có thể với Shiro ra khỏi hộp? Nếu không, cách thích hợp để thực hiện nó là gì?
Bạn có đề xuất mở rộng PassThruAuthenticationFilter và sau đó đặt mã đó bằng phương pháp ghi đè không? Nếu vậy phương pháp nào - tôi dường như không thể tìm ra phương pháp phù hợp. Hay bạn đang nói rằng mã phải ở trong một bộ điều khiển? Chúng tôi hiện không có bộ điều khiển đăng nhập và tôi đang cố gắng tìm hiểu cách sử dụng đề xuất của bạn. – alan
Không, tôi khuyên bạn nên đặt mã đó vào bất cứ thứ gì phục vụ trang đăng nhập của bạn. Tôi sử dụng jsf để mã đi bên trong phương thức đăng nhập của tôi trong bean Backing của tôi –
Bạn có thể mở rộng bộ lọc mặc định 'org.apache.shiro.web.filter.authc.FormAuthenticationFilter' để làm những gì bạn muốn, có thể bạn sẽ có quyền truy cập vào url thành công từ đây –