关于 Spring Security+JWT 实现权限验证, 小程序用户和管理系统如何实现分别鉴权?

遇见1995 2019-12-17 11:49:19
关于 Spring Security+JWT 实现权限验证, 小程序用户和管理系统如何实现分别鉴权?

因为管理员信息表和小程序用户表字段不一样. userInfo 是鉴权对象(要鉴权管理员则要换成adminInfo),实现起来不简洁.
public class StudentUserDetails implements UserDetails {
private UserInfo info;
private List<Permission> permissionList;
public StudentUserDetails(UserInfo info,List<Permission> permissionList) {
this.info = info;
this.permissionList = permissionList;
}

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
//返回当前用户的权限
return permissionList.stream()
// 过滤调权限值为空的情况。
// 注意权限值为“ "的情况会报错 A granted authority textual representation is required
// 这是因为SimpleGrantAuthority(String role)为空。
.filter(permission -> permission.getValue() != null)
.map(permission -> new SimpleGrantedAuthority(permission.getValue()))
.collect(Collectors.toList());
}

@Override
public String getPassword() {
return info.getPassword();
}

@Override
public String getUsername() {
return info.getUserId();
}

@Override
public boolean isAccountNonExpired() {
return true;
}

@Override
public boolean isAccountNonLocked() {
return true;
}

@Override
public boolean isCredentialsNonExpired() {
return true;
}

@Override
public boolean isEnabled() {
return true;
}
}



我能想到的解决办法是,将另外搭建后台管理系统的服务端.或在原来小程序用户信息表上,用字段区分是管理员还是普通用户.请问一下其他大佬还有没有其他办法?
...全文
760 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
简明说 2021-07-30
  • 打赏
  • 举报
回复

自己实现一套就好了,框架太臃肿了

yn_leopard 2019-12-18
  • 打赏
  • 举报
回复
从业务逻辑上来说,要判断一个用户是不是管理员,由对用户的授权决定。即逻辑上要区别用户管理和角色管理的职责。也就是对用户A分配管理员角色,那么用户A便是管理员帐号。
一个用户分配了多个角色,当这个用户登录时,返回当前用户的权限,便是多个角色的交集。可以用set或map进行交集对象的过滤,再排序输出。

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧