ログインインターセプター:ShiroInterceptorFilter。FormAuthenticationFilterから継承
傍受される前にリクエスト パスを取得します。
WebUtils.getSavedRequest(リクエスト);
文字列 URL = 保存されたリクエスト.getRequestUrl();
public classhiroInterceptorFilter extends FormAuthenticationFilter { //デフォルトの PC 側ログイン要求private String loginUrl; //インターセプトする必要がある要求パスの保存に使用されます static List<String> interceptorUrlList = new ArrayList<>(); //静的コード ブロック、ロードをインターセプトする必要があります [この例では、モバイル端末のリクエスト パスが格納されます] static{ interceptorUrlList.add("/manage/index"); interceptorUrlList.add("/system"); ..... . } //インターセプター構築メソッド publichiroInterceptorFilter() { } publichiroInterceptorFilter(String loginUrl) { this.loginUrl = loginUrl; } //パラメータの取得/設定メソッド @Override return loginUrl; public String getLoginUrl() { } @Override public void setLoginUrl(String loginUrl) { this.loginUrl = loginUrl; } //ログイン ページにジャンプするメソッドをオーバーライド @Override protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException { //リクエスト ヘッダーから Get HttpServletRequestの現在のリクエスト パス httpServletRequest = (HttpServletRequest) request; String url = httpServletRequest.getServletPath(); //インターセプトする必要があるかどうかを決定するために使用される識別。デフォルトではインターセプトする必要はありません。Boolean flag = false; // 現在のリクエストが (String mobileUrl : interceptorUrlList) のモバイル パスであるかどうかを判断します { flag = true; } } if(url.contains(mobileUrl)){ //インターセプトされたリクエストに従って、別のログインリクエストパスにジャンプします if(flag){ //モバイルインターフェース、インターセプトしてモバイルログインにジャンプします WebUtils.issueRedirect(request,response, "/ddLogin"); } else { //PC 側、PC 側ログインにジャンプ WebUtils.issueRedirect(request,response,loginUrl); } } }