技术路线:MybatisPlus(访问数据库)+Shiro(权限管理)+Themleaf(前端模板)+Mysql
学习视频:bilibili.com/video/BV16C4y187S9?from=search&seid=13525714923258801405
项目资料:链接:https://pan.baidu.com/s/1yUWMwBNa1KOY3WRHcldyAg 提取码:dnlj
1 登录逻辑
如图,用户把信息传递给后端,如果正确 返回JWT(java web tocken),它相当于一个用户身份凭证,用户拿到这个JWT后就可以用它访问后端的一些API
2shiro介绍
shiro 是一个主流java安全框架,不依赖容器,可运行在javaSE,javaEE,可用于执行身份、授权、密码学和会话的管理。
2.1 从应用程序外部看shiro
Subject:应用代码直接交互得对象是subject 即 Shiro 的对外API核心就是Subject
与Subject的所有交互都会委托给SecurityManager
SecurityManager:安全管理器,所有与安全有关的都会与SecurityManager交互,他管理着所有的Subject 是Shiro的核心,相当于
SpringMVC的DispatherServlet角色
Realm:Shiro从Realm获取安全数据,如果SecurityManager 验证用户信息,它需要从Realm获取相应的信息来验证。可以把 Realm看成是 Database
2.2shiro核心组件
用户、角色、权限 给用户赋予角色 给角色赋予权限
1 UsernamePasswordToken Shiro用来封装用户的登录信息,使用该信息来创建令牌
2SecurityManager Shiro 的核心部分,负责安全和授权
3Subject Shiro的一个抽象概念
4Realm 开发者自定义的模块,验证和授权的逻辑在Realm中
5AutheticationIfo 用户的角色信息集合,认证时使用
6AuthorizationInfo 用户的权限信息,授权时使用
7DefaultWebSecurityManager 安全管理器,开发者自定义的Realm需要注入到DefaultWebSecurityManager进行管理才能生效
8ShiroFilterFactoryBean 过滤器工厂
Shiro 的基本运行机制是开发者定制规则,Shiro去执行,具体的执行操作由ShiroFilterFactorBean创建的一个个Filter对象来完成
授权和认证规则
认证过滤器:
anon:无需认证。
authc:必须认证
authcBasic:需要通过HTTPBasic认证
user:不一定通过认证,只要被Shiro记录即可,比如常见的记住密码
授权过滤器:
perms:必须拥有某个权限才能访问
role:必须拥有某个角色才能访问
port:请求的端口必须是指定值才可以
rest:请求必须基于RESTful POST PUT GET DELETE
ssl:必须是安全的URL请求。HTTPS协议
2.3Shiro 实现登录认证
技术路线:MybatisPlus(访问数据库)+Shiro(权限管理)+Themleaf(前端模板)+Mysql
1 建立SpringBoot工程 ,选择下面几个依赖
2 授权和认证设计
创建3个页面 main.html、manage.html、administator.html
访问权限如下:
1 必须登录才能访问 main.html
2 当前用户必须拥有 manage授权才能访问 manage.html
3 当前用户必须拥有 administator角色才能访问
3建立数据库
4SpringBoot配置依赖
5配置yml文件
4总结
项目整体运行流程如下
1一开始我们需要写数据库对应的实体类,操作实现了MybatisPlus对数据库的操作
2根据我们的权限描述 写ShiroConfig配置文件 其中包括授权、验证、登录页面、非登录也买你
3Service 中实际上知识数据库的查询操作
4配置自定义的过滤器 AccountRealm 其中包括验证和授权
5编写Controller 页面信息 包括检查验证信息是否正确 这里由如图两个异常 捕获并处理他们就行了
项目运行流程,用户输入用户名密码后,点击登录按钮,就会把用户名和密码封装成一个Token,并进行验证,进入doGetAuthenticationInfo,它里面调用Service中的方法查询数据库,然后返回到开始出,然后跳转到该有的也买你。如果进入了登录系统,点击其他页面,会进入doGetAuthorizationInfo中进行授权验证,然后返回指定的url 然后跳转对应的页面,实现了权限管理的登录操作