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弹簧安全