1
同一問題在「Shiro中的多個登錄網址」下被問到,但未回答。Shiro中的不同登錄形式
我想有阿帕奇四郎 1)爲移動設備(小屏幕兩個不同的洛頁面,限制JavaScript的不同主題) 2)對於標準設備
我該怎麼辦?
現在每次只有一個網址正在工作。
shiro.loginUrl = ...
三江源
同一問題在「Shiro中的多個登錄網址」下被問到,但未回答。Shiro中的不同登錄形式
我想有阿帕奇四郎 1)爲移動設備(小屏幕兩個不同的洛頁面,限制JavaScript的不同主題) 2)對於標準設備
我該怎麼辦?
現在每次只有一個網址正在工作。
shiro.loginUrl = ...
三江源
您需要延長FormAuthenticationFilter
要注意多次登錄網址。它可以看起來像這樣:
public class CustomAuthenticationFilter extends FormAuthenticationFilter {
private Map<String, String> loginUrlByUserAgent = new HashMap<String, String>();
public void setLoginUrls(final Map<String, String> loginUrlByUserAgent) {
this.loginUrlByUserAgent = loginUrlByUserAgent;
}
protected void redirectToLogin(final ServletRequest request, final ServletResponse response) throws IOException {
final String loginUrl = getLoginUrl(request);
WebUtils.issueRedirect(request, response, loginUrl);
}
private String getLoginUrl(final ServletRequest request) {
// check user agent
final String userAgent = getUserAgent(request);
// and return appropriate login url
return userAgent != null && loginUrlByUserAgent.containsKey(userAgent) ?
loginUrlByUserAgent.get(userAgent) :
getLoginUrl();
}
private String getUserAgent(final ServletRequest request) {
// get "User-Agent" header
}
}
然後,你只需要用你新創建的authc過濾器。