ダニエルMartenssonから:
私はOAuth2.0からユーザーのメールアドレスでログインしてアクセスします。ただ、正しいユーザがログインする権限を持っていることを確認します。
それから私はこのコードを使用する必要があります。
@RequestMapping("/user")
public Principal user(Principal principal) {
return principal;
}
これは、JavaScriptから呼び出されます。
<div>
Logged in as: <span id="user"></span>
</div>
$.get("/user", function(data) { // Call Java code with GET request
$("#user").html(data.userAuthentication.details.name); // Set id=user to the name of the user
});
しかし、私は、Javaコードではなく、JavaScriptコードからこれをアクセスしたいです。どうやってやるの?
rieckpil:
あなたは春のセキュリティのデフォルトを使用する場合は、キャスト可能Principal
にUserDetails
オブジェクトや、あなたのユースケースのために必要なすべてのものへのアクセス権を持っています:
@GetMapping("/user")
public Principal user(Principal principal) {
UserDetails userDetails = (UserDetails) principal;
System.out.println(userDetails.getUsername());
System.out.println(userDetails.getPassword());
System.out.println(userDetails.getAuthorities());
// do whatever you want ...
return principal;
}
UPDATE:あなたはのOAuth2を使用して説明したように、あなたが認証されたのOAuth2プリンシパルを注入するために、次の操作を行うことができます。
@GetMapping("/user")
public Principal user(@AuthenticationPrincipal OAuth2User principal) {
// do whatever you want ...
return principal;
}