プロジェクトにカスタムの「認証プロバイダ」を実装する必要がありましたが、JSP で認証のオブジェクト プロパティにアクセスしようとしたときに問題が発生しました。詳細: カスタム認証プロバイダーが Authentication オブジェクトを正常に作成しました
Authentication auth = new UsernamePasswordAuthenticationToken(username, password, getAuthorities(userRoles));
log.info("User is authenticated");
return auth;
(ここでは関連するコードのみ)
次に、コントローラー メソッドで、ユーザー名を含むログ メッセージを表示します (これは、Authentication オブジェクトが作成され、セキュリティ コンテキストに配置されたことを証明します)。
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
log.info("Welcoming user " + auth.getPrincipal());
次に、JSPページで、次を使用してユーザー名を表示したい
<sec:authentication property="principal"/>
ただし、これによりエラー 500 が発生します。
org.springframework.beans.NotReadablePropertyException: Invalid property 'principal' of bean class [org.springframework.security.authentication.UsernamePasswordAuthenticationToken]: Bean property 'principal' is not readable...
ということにも気づきました
<sec:authorize ifAnyGranted="role">...
ユーザーは認証オブジェクトに追加された必要な役割を持っていますが、機能していません。
私が間違っていることはありますか?認証は正常に機能しますが、認証オブジェクトのプロパティにアクセスできません。
どうぞよろしくお願いいたします。