如果用户已经过身份验证,如何将请求重定向到已配置的 Shiro loginUrl?
2022-09-04 23:21:29
我有一个使用Shiro进行身份验证的Web应用程序。web.xml和shiro.ini的相关部分是:
<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>
和
[main]
authc.loginUrl = /authoring/login.html
authc.successUrl = /authoring
logout.redirectUrl = /authoring/login.html
[users]
foo = foo
[urls]
/authoring/logout = logout
/authoring/** = authc
Shiro 会正确拦截来自未经身份验证的客户端的所有请求,并重定向到配置的 loginUrl(然后在成功进行身份验证后将它们转发到请求的页面)。我希望发生的是,如果经过身份验证的客户端向 /authoring/login.html 发出显式请求,请将其重定向到 /authoring。仅当客户端经过身份验证时,才会发生这种情况。
例如,想想Gmail的工作原理 - 当您已经登录时,尝试访问 mail.google.com(甚至 https://accounts.google.com/ServiceLogin)会将您重定向到收件箱。开箱即用的四郎有可能吗?如果没有,实现它的正确方法是什么?