package com.veiking.sec.authentication;
import java.util.Collection;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import com.google.gson.Gson;
import com.veiking.sec.bean.SPermission;
import com.veiking.sec.bean.SRole;
import com.veiking.sec.bean.SUser;
/**
* 用户信息的封装,包含用户名称密码及用户状态、权限等信息
* @author Veiking
*/
public class VUserDetails extends SUser implements UserDetails{
private static final long serialVersionUID = 1L;
Gson gson = new Gson();
Logger logger = LoggerFactory.getLogger(this.getClass());
//用户角色列表
private List<SRole> sRoleList = null;
//用户资源权限列表
private List<SPermission> sPermissionList = null;
/**
* 注意后边的这两个参数:sRoleList、sPermissionList
* @param sUser
* @param sRoleList
* @param sPermissionList
*/
public VUserDetails(SUser sUser, List<SRole> sRoleList, List<SPermission> sPermissionList) {
super(sUser);
this.sRoleList = sRoleList;
this.sPermissionList = sPermissionList;
}
/**
* 获取用户权限列表方法
* 可以理解成,返回了一个List<String>,之后所谓的权限控制、鉴权,其实就是跟这个list里的String进行对比
* 这里处理了角色和资源权限两个列表,可以这么理解,
* 角色是权限的抽象集合,是为了更方便的控制和分配权限,而真正颗粒化细节方面,还是需要资源权限自己来做
*/
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
StringBuilder authoritiesBuilder = new StringBuilder("");
List<SRole> tempRoleList = this.getsRoleList();
if (null != tempRoleList) {
for (SRole role : tempRoleList) {
authoritiesBuilder.append(",").append(role.getRole());
}
}
List<SPermission> tempPermissionList = this.getsPermissionList();
if (null != tempPermissionList) {
for (SPermission permission : tempPermissionList) {
authoritiesBuilder.append(",").append(permission.getPermission());
}
}
String authoritiesStr = "";
if(authoritiesBuilder.length()>0) {
authoritiesStr = authoritiesBuilder.deleteCharAt(0).toString();
}
logger.info("VUserDetails getAuthorities [authoritiesStr={} ", authoritiesStr);
return AuthorityUtils.commaSeparatedStringToAuthorityList(authoritiesStr);
}
@Override
public String getPassword() {
return super.getPassword();
}
@Override
public String getUsername() {
return super.getName();
}
/**
* 判断账号是否已经过期,默认没有过期
*/
@Override
public boolean isAccountNonExpired() {
// TODO Auto-generated method stub
return true;
}
/**
* 判断账号是否被锁定,默认没有锁定
*/
@Override
public boolean isAccountNonLocked() {
return true;
}
/**
* 判断信用凭证是否过期,默认没有过期
*/
@Override
public boolean isCredentialsNonExpired() {
return true;
}
/**
* 判断账号是否可用,默认可用
*/
@Override
public boolean isEnabled() {
return true;
}
public List<SRole> getsRoleList() {
return sRoleList;
}
public void setsRoleList(List<SRole> sRoleList) {
this.sRoleList = sRoleList;
}
public List<SPermission> getsPermissionList() {
return sPermissionList;
}
public void setsPermissionList(List<SPermission> sPermissionList) {
this.sPermissionList = sPermissionList;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
springBoot+security+mybatis 实现用户权限的数据库动态管理
共61个文件
class:17个
java:17个
html:8个
3星 · 超过75%的资源 需积分: 47 46 下载量 62 浏览量
2019-05-03
01:30:28
上传
评论 2
收藏 79KB RAR 举报
温馨提示
NULL 博文链接:https://veiking.iteye.com/blog/2429172
资源详情
资源评论
资源推荐
收起资源包目录
sec.rar (61个子文件)
sec
.project 1KB
src
test
resources
java
main
webapp
resources
public
index.html 711B
hello.html 914B
admin.html 710B
login.html 1KB
static
css
bootstrap.min.css 120KB
application.yml 547B
java
com
veiking
sec
service
SecurityDataService.java 1KB
WebSecurityConfig.java 2KB
WebMvcConfig.java 749B
controller
PageController.java 653B
dao
SPermissionDao.java 1KB
SRoleDao.java 1KB
SUserDao.java 629B
authorization
VAccessDecisionManager.java 2KB
VFilterInvocationSecurityMetadataSource.java 3KB
VFilterSecurityInterceptor.java 3KB
bean
SPermission.java 351B
SRole.java 313B
SUser.java 457B
authentication
VUserDetails.java 4KB
VUserDetailsService.java 1KB
VAuthenticationProvider.java 3KB
SecApplication.java 358B
target
m2e-wtp
web-resources
META-INF
MANIFEST.MF 307B
maven
sec_test
sec
pom.properties 202B
pom.xml 3KB
classes
public
index.html 711B
hello.html 914B
admin.html 710B
login.html 1KB
com
veiking
sec
service
SecurityDataService.class 2KB
WebSecurityConfig.class 5KB
controller
PageController.class 946B
WebMvcConfig.class 1KB
dao
SUserDao.class 399B
SRoleDao.class 910B
SPermissionDao.class 938B
authorization
VFilterSecurityInterceptor.class 3KB
VAccessDecisionManager.class 3KB
VFilterInvocationSecurityMetadataSource.class 4KB
bean
SRole.class 2KB
SUser.class 2KB
SPermission.class 3KB
authentication
VUserDetails.class 4KB
VUserDetailsService.class 2KB
VAuthenticationProvider.class 3KB
SecApplication.class 690B
static
css
bootstrap.min.css 120KB
application.yml 547B
test-classes
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.m2e.core.prefs 90B
org.eclipse.jdt.core.prefs 430B
org.eclipse.wst.validation.prefs 50B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.core.resources.prefs 191B
org.eclipse.wst.common.component 674B
.jsdtscope 639B
pom.xml 3KB
.classpath 1KB
共 61 条
- 1
weixin_38669628
- 粉丝: 383
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2