一,用数据库实现权限管理要注意哪些环节?
1,需要生成spring security中user类的派生类,用来保存用户id和昵称等信息,
避免页面上显示用户昵称时需要查数据库
2,如果需要在页面上显示用户的登录信息,
需要自定义一个interceptor,
把用户的昵称等信息添加到 modelandview
3,普通用户的角色,即默认的权限,因为每个用户都具有,
就不要写入到数据表中,
避免数据量大时查询缓慢
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,演示项目的相关信息
1,项目地址:
https://github.com/liuhongdi/securitylogin
2,项目功能说明
演示了使用数据库实现的用户RBAC权限管理
三种页面:
无权限限制页面:任何人都可访问
需登录页面:修改密码等:登录才可以访问
有权限限制页面:必须授予相应的角色后才能访问
3,项目结构:如图:
三,配置文件说明
1,pom.xml
org.springframework.boot
spring-boot-starter-security
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-validation
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.3
mysql
mysql-connector-java
runtime
com.alibaba
fastjson
1.2.72
2,application.properties
#thymeleaf
spring.thymeleaf.cache=falsespring.thymeleaf.encoding=UTF-8spring.thymeleaf.mode=HTML
spring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.html
#mysql
spring.datasource.url=jdbc:mysql://localhost:3306/security?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=lhddemo
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#mybatis
mybatis.mapper-locations=classpath:/mapper/*Mapper.xml
mybatis.type-aliases-package=com.example.demo.mapper
#error
server.error.include-stacktrace=always
#log
logging.level.org.springframework.web=trace
3,数据库: