2016-09-20 6 views
1

ログインが成功したら、春にログオンしたユーザーを取得する方法RestController春のセキュリティ(angularjs)を使用してログに記録されたユーザーを取得する正しい方法は何ですか

私は以下の方法/原理を使用してログに記録されたユーザーを取得しますが、ログに記録されたユーザーの代わりにanonymousUserを取得します。

Principal principal = SecurityContextHolder.getContext().getAuthentication(); 

または

Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
+0

ここで私のプリントコンソールには何が入っていますか? 'org.sprin[email protected]905571d8:プリンシパル:anonymousUser;資格:[プロテクト];認証済み:真;詳細:org.sprin[email protected]0:RemoteIpAddress:127.0.0.1; SessionId:0125899A0DC1CF4F5C5A5416E1D1E49C;許可された権限:ROLE_ANONYMOUS' – Sadun89

答えて

1

あなたは、認証の対象からユーザー名でログインを得ることができます。ユーザーオブジェクトを取得するには、認証オブジェクトから取得したユーザー名を使用します。このような

何か作業をする必要があります:

Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
String name = auth.getName(); 
User user = userService.findByUserName(name); 

またはそれ以上は、あなたが引数としてコントローラ内で校長を使用し、春が正しい主たる目的を通過させることができます。ユーザーがログインしていない場合は、nullになります。

public String hello(Principal principal) { 

    String name = principal.getName(); 
    User user = userService.findByUserName(name); 

} 

Ps:匿名認証を取得している場合、ユーザーは認証されません。 SecurityContextはユーザーがログインしていない匿名認証を返します。 `

+0

'認証auth = SecurityContextHolder.getContext()。getAuthentication(); 文字列名= auth.getName(); ' "のために "anonymousUser'を取得します。 – Sadun89

+1

答えに追加したメモを確認してください。 –

関連する問題