Spring-Security (学习记录三)--读取数据库中的用户和角色
2016-08-29 10:32
459 查看
用数据库中的用户跟角色替换spring-security.xml中的用户名和角色,这里我用hibernate框架来获取数据库中的用户名和角色
详情请看附件
[Toc]
1.先将hibernate的环境整合进来
2.创建一个数据库security,执行security.sql
3.修改spring-security.xml,采用数据库的方式读取用户跟角色
<!-- 认证管理器,配置了管理员与角色的关系 --> <security:authentication-manager> <!-- 配置账号密码所属的角色 角色以 ROLE_开头,为spring获取名称的标识 --> <security:authentication-provider user-service-ref="accountService"> <!-- 采用xml的方式 <security:user-service> <security:user name="user" password="user" authorities="ROLE_USER" /> <security:user name="admin" password="admin" authorities="ROLE_ADMIN" /> </security:user-service> --> </security:authentication-provider> </security:authentication-manager>
配置文件中的accountService需要实现UserDetailsService接口,实现loadUserByUsername方法,
security框架会根据这个方法来获取用户信息
@Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { return accountDao.getJoinRole(username); }
由于这个方法返回的是UserDetails类型,所以我们的用户类Account需要实现UserDetails接口,
在Account中。由于实现UserDetails接口,需要返回角色信息的类型为Collection<? extends GrantedAuthority>,所以我们的Role类还需要实现GrantedAuthority接口
/** * 返回角色集合 */ @Transient @Override public Collection<? extends GrantedAuthority> getAuthorities() { return roles; }
详情请看下面百度云连接
注:如果项目启动报错,刷新maven
4.uml图说明其中的关系
spring采用了接口的方式,来规定流程,我们需要实现相应的接口来把这个流程跑起来。
认证管理器 <security:authentication-manager>中要求我们实现UserDetailsService接口,而接口中的方法 public UserDetails loadUserByUsername(String username) 规定了我们要返回UserDetails 类型,所以我们的account需要实现UserDetails接口,接下来UserDetails接口中需要实现public Collection<? extends GrantedAuthority> getAuthorities()方法,规定了我们返回的角色role类需要实现GrantedAuthority接口。下面是图解。
百度云链接:http://pan.baidu.com/s/1geD4635 密码:wo2i
相关文章推荐
- springboot+mybatis+SpringSecurity 实现用户角色数据库管理(一)
- springboot+mybatis+SpringSecurity 实现用户角色数据库管理(一)
- Spring Boot集成Security使用数据库用户角色权限用户名问题
- Spring-Security (学习记录四)--配置权限过滤器,采用数据库方式获取权限
- springBoot+springSecurity 数据库动态管理用户、角色、权限(二)
- springBoot+springSecurity 数据库动态管理用户、角色、权限(二)
- Spring Boot集成Security使用数据库用户角色权限ROLE_问题
- springboot+mybatis+SpringSecurity 实现用户角色数据库管理(一)
- springBoot+springSecurity 数据库动态管理用户、角色、权限
- Spring-Security (学习记录五)--配置登录时,密码采用md5加密,以及获取登录信息属性监听同步自己想要的登录信息
- Spring-Security (学习记录六)--采用ehcache缓存UserDetails
- spring security Controller用户角色的判断
- springboot-28-security(一)用户角色控制
- Spring-Security (学习记录一)--登录
- 倪蒙oralce学习笔记之Oracle创建删除用户、角色、表空间、导入导出数据库总结
- QuickCSharp框架开发(19)------验证成功后从数据库中读取该用户隶属的所有角色
- springboot-29-security(二)用户角色权限控制
- Spring-Security (学习记录七)--实现FilterInvocationSecurityMetadataSource的类将无法切入声明式事物
- Spring-Security (学习记录二)--修改为自己的登录页面
- VC6 下学习使用Teechart8记录 三 数据库读取与鼠标选取数据