Spring boot 搭建个人博客系统(三)——权限管理功能
一直想用Spring boot 搭建一个属于自己的博客系统,刚好前段时间学习了叶神的牛客项目课受益匪浅,乘热打铁也主要是学习,好让自己熟悉这类项目开发的基本流程。系统采用Spring boot+MyBatis+MySQL的框架进行项目开发。
项目源码:Jblog
个人主页:tuzhenyu’s page
原文地址:Spring boot 搭建个人博客系统(三)——权限管理功能
0. 思路
系统权限管理功能用来添加存储区分系统用户,进而实现系统的权限管理。博客系统权限可以简单分为博主权限和普通用户权限,普通用户权限可以浏览文章,发表评论或者赞踩等,博主权限除此之外还可以添加文章,管理系统等。未登录用户只能浏览文章不能发表评论或者赞踩等。
权限管理一般有三种常见的思路:利用Spring拦截器进行访问权限验证,利用Spring AOP进行访问权限验证和直接使用Spring Security集成模块进行访问权限验证。
- 利用Spring拦截器进行访问权限验证是通过拦截器在请求到达控制器之前拦截请求进行相应的权限验证。
- 利用Spring AOP进行访问权限验证是利用AOP切面编程的特点,可以在所有控制器函数内织入权限验证模块代码,当请求到达控制器之后会进行响应的权限验证。
- Spring Security是Spring的一个集成的安全框架,其底层原理也是集成众多的拦截器对url进行拦截从而实现响应的权限管理。
三种实现权限管理的方法相比较之下,Spring Security作为一个框架使用简单功能完善但较为笨重;Spring AOP织入权限验证代码比较方便但是不够灵活;系统选用利用Spring拦截器进行访问权限验证,根据具体需求插入相应的拦截器,使用较为方便。
1. 数据模型
权限管理需要验证用户信息,需要操纵数据库的user表和login_ticket表,这两个表的数据模型已在上一篇Spring boot 搭建个人博客系统(二)——登录注册功能中详细说明,这里不再赘述;
2. Spring拦截器
Spring拦截器主要是通过Interceptor实现类来实现,主要用来拦截用户的请求并进行相应的处理。拦截器能够在用户请求进入控制器之前将请求拦截下来并进行处理。请求先进入拦截器的preHandle()函数进行处理,处理结束后进入控制器,在控制器处理结束后,页面渲染之前会进入拦截器的postHandle()函数处理,最终在页面渲染结束后进入拦截器的afterCompletion()函数处理。
preHandle(): 这个方法在业务处理器处理请求之前被调用,SpringMVC 中的Interceptor 是链式的调用的,在一个应用中或者说是在一个请求中可以同时存在多个Interceptor ,多个Interceptor 的调用会依据它的声明顺序依次执行,而且最先执行的都是Interceptor 中的preHa