[英]Spring security LDAP success handler
我已經嘗試在我的Web應用程序中使用帶有LDAP的Spring安全性實現用於登錄的成功處理程序。 在線搜索之后,我發現的唯一方法是實現自定義用戶詳細信息映射器,如下所示:
public class CustomUserDetailsMapper extends LdapUserDetailsMapper{
private static final String ROLE_NORMAL_USER = "Normal User";
private static final String ROLE_ADMIN = "Administrator";
@Override
public UserDetails mapUserFromContext(DirContextOperations ctx,
String username, Collection<? extends GrantedAuthority> authority) {
UserDetails originalUser = super.mapUserFromContext( ctx, username, authority );
originalUser.getAuthorities();
Set<AndaAuthority> roles = EnumSet.noneOf(AndaAuthority.class);
roles.add(AndaAuthority.ROLE_ADMIN);
for (GrantedAuthority auth : authority) {
if (ROLE_NORMAL_USER.equalsIgnoreCase(auth.getAuthority())) {
roles.add(AndaAuthority.ROLE_USER);
} else if (ROLE_ADMIN.equalsIgnoreCase(auth.getAuthority())) {
roles.add(AndaAuthority.ROLE_ADMIN);
}
}
SecurityContextHolder.getContext().getAuthentication().getCredentials();
User newUser =
new User(
originalUser.getUsername(),
originalUser.getPassword() != null? originalUser.getPassword():"",
originalUser.isEnabled(),
originalUser.isAccountNonExpired(),
originalUser.isCredentialsNonExpired(),
originalUser.isAccountNonLocked(),
roles );
return newUser;
}
}
這很有效-當我在此處放置斷點時,它停止了。 但是,是否有更好的方法來實現這種情況的處理程序? 我的意思是,整個身份驗證部分都是在“幕后”完成的,如果出現問題並且沒有調用此方法,我將無法真正調試。我沒有其他方法可以知道問題出在哪里。
謝謝
對於其他任何想知道的人:您必須將成功處理程序聲明為Bean,以便可以在Spring安全配置中將其鏈接。
此處的實現效果很好,您只需在<form-login>
配置標記中聲明您的authentication-success-handler-ref
並覆蓋onAuthenticationSuccess
方法。
可能存在其他更好的解決方案,但這是我在我的案例中找到並使用的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.