2
Q
彈簧安全定製
A
回答
1
根本不可能。儘管你需要提供你自己的UserDetails實現。它並不是非常困難。 This article顯示了一種可行的方法。以下是我最近使用的一些代碼:
我開始提供自己的UserDetails impelementation,以適合我的目的。實際上,我在Staff類中擁有所有額外的細節,並且只需從MyUser到Staff的「多對一」參考。不過,我簡化了這個答案,並且直接在MyUser類中包含了fullName和email屬性。
public class MyUser implements UserDetails {
@NotNull
@Size(min = 3, max = 50)
private String username;
@NotNull
@Size(min = 3, max = 256)
private String password;
private Boolean enabled;
private Boolean accountNonLocked;
private Boolean accountNonExpired;
private Boolean credentialsNonExpired;
private String email;
private String fullName;
private GrantedAuthority authorities;
@Override
public Collection<GrantedAuthority> getAuthorities() {
return authorities;
}
@Override
public String toString() {
return username;
}
@Override
public boolean isAccountNonExpired() {
return this.accountNonExpired;
}
@Override
public boolean isCredentialsNonExpired() {
return this.credentialsNonExpired;
}
@Override
public boolean isAccountNonLocked() {
return this.accountNonLocked;
}
@Override
public boolean isEnabled() {
return this.enabled;
}
public String getEmail(){
return email;
}
public String getFullName(){
return fullName;
}
}
然後我提供了我自己的User Details Service實現,因爲我使用Hibernate將所有內容保存在數據庫中。您可能需要不同的實現:
public class MyUserDetailsService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException, DataAccessException {
UserDetails userDetails = null;
TypedQuery<MyUser> q = MyUser
.findMyUsersByUsernameEquals(username);
userDetails = q.getSingleResult();
if (userDetails == null)
throw new UsernameNotFoundException("user not found");
return userDetails;
}
}
然後在我加入這個ApplicationContext的-security.xml文件:
<!-- Add a custom UserDetailsService -->
<beans:bean id="udservice" class="my.package.name.security.MyUserDetailsService"></beans:bean>
這:
<!-- Configure Authentication mechanism -->
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="udservice">
<password-encoder hash="sha-256" />
</authentication-provider>
</authentication-manager>
現在,當你訪問用戶即登錄您獲得您的類的實例並訪問其所有屬性。
相關問題
- 1. 彈簧安全定製AuthenticationSuccessHandler
- 2. 定製彈簧安全
- 3. 彈簧安全2.0彈簧安全3.0
- 4. grails彈簧安全定製userDetailsService
- 5. 彈簧安全
- 6. 彈簧安全定製Authenticator在彈簧/彈簧安全版本升級後未被調用
- 7. Neo4j彈簧安全
- 8. 彈簧安全表
- 9. 使用彈簧安全與彈簧批
- 10. Angular2與彈簧靴和彈簧安全
- 11. 彈簧啓動和彈簧安全4.0
- 12. 彈簧啓動彈簧安全
- 13. 在彈簧安全與彈簧websocket集成彈簧安全性和
- 14. 醃製密碼與彈簧3安全
- 15. 彈簧安全管理控制檯
- 16. 彈簧安全oauth2後限制
- 17. 彈簧安全重定向404錯誤
- 18. 彈簧安全 - 自定義ExceptionTranslationFilter
- 19. 彈簧安全重複重定向
- 20. 重寫彈簧安全重定向URL
- 21. 自定義註釋與彈簧安全
- 22. 使用彈簧安全
- 23. 彈簧安全flush flushilleges
- 24. 異步彈簧安全WebFilter
- 25. 休眠+彈簧安全
- 26. 彈簧安全3.1.4後門
- 27. Spring i18n Vs彈簧安全
- 28. 彈簧安全映射
- 29. 彈簧安全不認證
- 30. Grails和Oauth2彈簧安全