前言:在网上看的第一个前后端分离的项目(项目地址:
https://www.zhuawaba.com/post/17
),技术栈springboot+shiro+jwt+vue。因为没接触过shiro,所以学习了黑马的shiro教程(https://www.bilibili.com/video/BV1j54y1t7jM?spm_id_from=333.999.0.0),感觉老师很多地方都没讲清,很多细节都屏蔽了,因此自己测试了一些细节,以及相应整理了一些知识,特此记录下来以免忘记。
1.总体结构
最关键的部分就是Subject,Security Manager,Realms三个部分。
Subject在shiro中是一个接口,接口中定义了很多认证授相关的方法,外部程序通过subject进行认证授,而subject是通过SecurityManager安全管理器进行认证授权。鉴权,判断是否认证,获取session,登录等操作都是直接调用其中的方法。
3.SecurityManagerSecurityManager权限管理器,它是shiro的核心,负责对所有的subject进行安全管理。通过SecurityManager可以完成subject的认证、授权等,SecurityManager是通过Authenticator进行认证,通过Authorizer进行授权,通过SessionManager进行会话管理等。SecurityManager是一个接口,继承了Authenticator, Authorizer, SessionManager这三个接口
4.AuthenticatorAuthenticator认证器,只对执行内置login方法才执行认证,自定义的登录方法并不受Authenticator管理
5.AuthorizerAuthorizer授权器,用户通过认证器认证通过,在访问功能时需要通过授权器判断用户是否有此功能的操作权限。比如调用subject.hasRoles等鉴权方法,此授权器便会工作。
6.Realm(数据库读取+认证功能+授权功能实现)Realm完成的功能就是读取数据库中的数据或者配置文件的数据,不同的Realm完成不同的功能,也可以自定义Realm。



