gpt4 book ai didi

java - 为什么在 Spring 3.0 身份验证示例中将 user.getRole() 设置为 GrantedAuthority?

转载 作者:行者123 更新时间:2023-12-04 06:48:36 24 4
gpt4 key购买 nike

我正在尝试了解 Spring 3.0 身份验证。

在下面的代码中,为什么 user.getRole()设置为 GrantedAuthority ?

public final UserDetails loadUserByUsername(final String username)
{
final List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
UserAccount user = (UserAccount) memcacheService.get(username);

if (user == null)
{
final Query query = entityManager.createQuery("SELECT u FROM UserAccount u WHERE username = :username");
query.setParameter(USERNAME, username);

try
{
user = (UserAccount) query.getSingleResult();

memcacheService.put(username, user, Expiration.byDeltaSeconds(DEFAULT_EXPIRATION));
}
catch (NoResultException e)
{
return null;
}
}

authorities.add(new GrantedAuthorityImpl(user.getRole()));

return new EnhancedUser(user.getUsername(), user.getEmail(), user.getDisplayName(), user.getPassword(), user
.getSalt(), user.isEnabled(), user.isAccountNonExpired(), user.isCredentialsNonExpired(), user.isAccountNonLocked(),
authorities);
}

最佳答案

在 3.0 中 UserDetails对象必须将权限维护为GrantedAuthority 的列表实现。如果需要一些复杂的或自定义的角色处理,应用程序开发人员应该编写自己的 GrantedAuthority 实现。 .但在大多数情况下,权限仅基于定义为 String 的角色,因此 spring-security 开箱即用提供了基于字符串角色的默认简单实现 GrantedAuthority这是 GrantedAuthorityImpl .

我希望这是你想知道的,因为这个问题有点不清楚。

关于java - 为什么在 Spring 3.0 身份验证示例中将 user.getRole() 设置为 GrantedAuthority?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3435487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com