ユーザーの姓名を印刷する方法<sec:authentication property="principal.username"/>
これprincipal.username
はユーザー ID のみを出力します。しかし、ここでデータベースからユーザーの姓名を出力したいと思います。出来ますか?
ユーザーの姓名を印刷する方法<sec:authentication property="principal.username"/>
これprincipal.username
はユーザー ID のみを出力します。しかし、ここでデータベースからユーザーの姓名を出力したいと思います。出来ますか?
あなたはSpring Securityについて話していると思います。
これが私が使用した解決策です:
ユーザーをマップするクラスを作成します。インターフェースorg.springframework.security.core.userdetails.UserDetailsを実装する必要があります。
public class MyUserDetails implements UserDetails {
private String username;
private String password;
private String firstname;
private String lastname;
public String getFirstname() {
return firstname;
}
public String getLastname() {
return lastname;
}
// Etc.
}
データベースからユーザーをロードするorg.springframework.security.core.userdetails.UserDetailsServiceの実装を作成します。
@Component
public class MyUserDetailsService implements UserDetailsService {
@Autowired
private MyUserDAO userDAO;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
final MyUserDetails user = userDAO.getUserByUsername(username);
if(user == null) {
throw new UsernameNotFoundException("No user found for username '" + username +"'.");
}
return user;
}
}
次に、サービスを使用してユーザーから詳細をロードするように Spring Security に指示する必要があります。
<authentication-manager>
<user-service id="myUserDetailsService"/>
</authentication-manager>
これで、現在のユーザーの名と姓を使用<sec:authentication property="principal.firstname"/>
して表示できるようになります。<sec:authentication property="principal.lastname"/>