2016-06-11 8 views
0

現在ログインしているユーザーとログインしていないユーザーの両方で閲覧できるシンプルなWebサイトをプログラミングしています。ページの代わりにナビゲーションバーでログインを作成する方法

私はspring/spring-securityを使用して簡単なログインページを作成できますが、ナビゲーションバー(Facebookなど)からのログインを許可する方がはるかです。これは春のセキュリティで可能でしょうか?春のセキュリティでは、ログインページからのログインのみが許可され、htmlページ内のhtmlブロックからのログインは許可されないようです。

編集:私は成功ハンドラを使用して、リダイレクトするのではなく、ログインが完了した後にページを更新することを考えています。

+0

facebookがスプリングセキュリティを使用していることをどのように知っていますか? –

+0

私はしません。私は単に私が達成しようとしているものの例を挙げています。 – ADOGCATFISH3333

+0

あなたの質問はあなたがしたいことについてはあまり明確ではありません。あなたは間違いなくあなたのログインフォームを置くためにナビを使用することができます。それは春のセキュリティとは関係ありません – LynAs

答えて

1

はい、可能ですが、ページを自動読み込みする場合はAJAXを使用する必要があります。 あなたは以下のように設定することができます春のJavaの設定を使用している場合:

@Configuration 
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(final HttpSecurity http) throws Exception { 
     http 
      .csrf() 
       .csrfTokenRepository(this.csrfTokenRepository()) 
      .and() 
       .authorizeRequests() 
        /* The configuration of which requests to intercept. */ 
      .and() 
       .formLogin() 
        .loginPage("/login") 
        .loginProcessingUrl("/login") 
        .failureUrl("/login/failed") 
        .defaultSuccessUrl("/o") 
        .usernameParameter("username") 
        .passwordParameter("password") 
        .permitAll() 
      .and() 
       .logout() 
        .logoutUrl("/logout") 
        .logoutSuccessUrl("/login/out") 
        .permitAll(); 
    } 

    /** 
    * Creates a {@link CsrfTokenRepository} that sets the token name to 
    * _csrf. 
    * 
    * @return The {@link CsrfTokenRepository}. 
    */ 
    private CsrfTokenRepository csrfTokenRepository() { 
     val csrfTokenRepository = new HttpSessionCsrfTokenRepository(); 
     csrfTokenRepository.setSessionAttributeName("_csrf"); 
     return csrfTokenRepository; 
    } 
} 

上記の構成は以下のん:

  • _csrfという名前のパラメータにCSRFトークンを受け入れるようにCSRFトークンのリポジトリを設定します。 (CSRFについての詳細:。https://en.wikipedia.org/wiki/Cross-site_request_forgery
  • /loginに利用できるように、ログイン・ページを設定します
  • /loginにログイン処理のURLを設定します。これは、あなたが、ユーザー名とパスワードにPOSTリクエストを送信する必要がURLである、と。 CSRFトークンセット。
  • /login/failedに失敗URLを設定します。これは、ユーザが、彼は、ログインページで間違った資格情報を入力したときにリダイレクトされますページです。
  • usernamepasswordするユーザ名のパラメータとパスワードを設定しますこれらのパラメータは、送信するPOSTリクエストでCSRFトークンとともに設定する必要があるパラメータですログイン処理のURL
  • ログインページのすべてのアクセスを許可します。
  • ログアウトURLとログアウト成功URLを設定します。あなたは、サーバー側で行う必要があり、ほとんどすべてです

。クライアント側では、ログイン処理URLに設定されたアクションとPOSTに設定されたメソッドを設定し、CSRFトークンを含む_csrfという名前の隠しフィールドを設定するか、そのようなAJAXリクエストを送信する必要があります。

挨拶、ファビアン


私はここの前にそれを使用する方法の実施例であることを行っている:https://github.com/lcmanager/gdb

春のWeb設定:ログインするhttps://github.com/lcmanager/gdb/blob/master/gdb-web-control/src/main/java/org/lcmanager/gdb/config/WebSecurityConfiguration.java

フォームin:https://github.com/lcmanager/gdb/blob/master/gdb-web-control/src/main/resources/templates/modules/login.ftl

JavaScriptでログインする(AngularJSを使用):https://github.com/lcmanager/gdb/blob/master/gdb-web-control/src/main/resources/static/js/modules/login.js

関連する問題