2017-10-18 8 views
1

ユーザーがシステムにログインした後にURLを変更する方法はありますか?たとえば、ログインURLがdemo.xxx.com/loginの場合、ユーザーが認証された後、abc.xxx.com/dashboardに変更します。 abcはユーザグループであり、ユーザが認証されるときに決定されます。私のアプリケーションは、春のブートに基づいており、春のセキュリティを認証に使用しています。動的フィールドに基づいてURLを変更する

答えて

1

最も簡単な方法は、春のセキュリティWebSecurityConfigurerAdapter Beanにデフォルトの成功URLを設定することです。 XML設定を使用している場合、私はどのように手をつないでいるのかはわかりませんが、これも設定できると思います。リダイレクトのさらに細かい制御が必要な場合は

@Configuration 
@EnableWebSecurity 
public class AppSecurityConfiguration extends WebSecurityConfigurerAdapter { 
    protected void configure(HttpSecurity http) throws Exception { 
     http.formLogin() 
      .loginPage("/login") 
      .defaultSuccessUrl("/dashboard"); 
    } 
} 

、独自の認証成功ハンドラを実装し、カスタムリダイレクト戦略を提供することができます。

http.formLogin().successHandler(new SavedRequestAwareAuthenticationSuccessHandler() { 
    { 
     setRedirectStrategy(new RedirectStrategy() { 
      @Override 
      public void sendRedirect(HttpServletRequest request, HttpServletResponse response, String url) throws IOException { 
       // Put your logic here for sending redirects 
       response.sendRedirect("https://xyx.mydomain.com/dashboard"); 
      } 
     }); 
    } 
}); 
+0

ユーザーが認証されてからurlダッシュボードに移動するときに、urlを設定する必要があります。ユーザーグループに基づいて、URLを変更する必要があります。認証の間、私はユーザーグループをチェックするこれらの情報を持っていません。 @RequestMapping(値= "/ポータル/アセット") パブリック文字列ダッシュボード(モデルモデル){ \t \t試み{\t \t \t \t \t \t model.addAttribute( "1"、 "1")。 \t \t \t返信 "ダッシュボード"; }キャッチ(例外e){ \t \t \t e.printStackTrace(); \t \t \t return "error"; \t \t \t \t} \t} – user3334226

関連する問題