java 用户拒绝对代码授予权限_java-Spring安全角色无法转换为授予的权限

User.java

public class User implements Serializable{

@Id

@Size(min=5,max=15)

@Column(name="username", unique=true)

private String username;

@OneToMany(mappedBy="user")

private Collection roles;

public User(User user) {

this.username=user.username;

this.roles=user.getRoles();

}

}

角色.java

public class Role implements Serializable{

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

private int id;

private String role;

@ManyToOne

@JoinColumn(name="username")

private User user;

}

UserServiceImpl.java

public class UserServiceImpl implements UserServiceDetails {

private UserRepo userRepo;

@Autowired

public void setUserRepo(UserRepo userRepo) {

this.userRepo = userRepo;

}

@Override

public UserDetails loadUserByUsername(String username)

throws UsernameNotFoundException {

User user=userRepo.findUserByUsername(username);

if(user == null) {

throw new UsernameNotFoundException("Could not find user " + username);

}

CustomUser customUser=new CustomUser(user);

return customUser;

}

public final static class CustomUser extends User implements UserDetails

{

public CustomUser(User user) {

super(user);

}

@SuppressWarnings("unchecked")

@Override

public Collection extends GrantedAuthority> getAuthorities() {

List authorities =

new ArrayList();

authorities.addAll((Collection extends GrantedAuthority>) getRoles());

return authorities;

}

@Override

public boolean isAccountNonExpired() {

return true;

}

@Override

public boolean isAccountNonLocked() {

return true;

}

@Override

public boolean isCredentialsNonExpired() {

return true;

}

}

}

安全性COnfig.java

public class SecurityConfig extends WebSecurityConfigurerAdapter{

@Autowired

private UserDetailsService userDetailsService;

@Override

protected void configure(AuthenticationManagerBuilder auth)

throws Exception {

auth

.userDetailsService(userDetailsService);

}

}

错误:

无法将角色转换为org.springframework.security.core.GrantedAuthority

我的角色表包含​​角色形式为“用户”,“管理员”等的角色

有什么建议么?

谢谢

解决方法:

正如Denium所说的那样,强制转换不会像在代码中那样起作用.我通过遍历每个角色来做类似的事情,像这样:

authorities = new HashSet(roles.size());

for (String role : roles)

authorities.add(new SimpleGrantedAuthority("ROLE_" + role));

标签:spring-security,spring,java,spring-mvc

来源: https://codeday.me/bug/20191119/2038237.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值