- 与spring security一样它也提供认证(登录)、授权功能、会话管理、加密
- 为什么有shiro? 不用shiro,用多个过滤器也能实现,但是代码不能统一接口。--》需要统一接口---》shiro
- shiro核心组件: 用户、角色、权限 给角色赋予权限,给用户赋予角色 用户不是直接跟权限挂钩,而是通过角色间接挂钩权限
- UsernamePasswordToken, 封装用户登录信息,创建token
- SecurityManager,负责安全认证和授权
- Subject,shiro的一个抽象概念,取用户信息,包含用户信息
- Realm:开发者自定义模块,认证、授权的逻辑都写在Realm中
- AuthenticationInfo,用户的角色集合,认证时使用,做具体事情时认证
- AuthorizationInfo,角色权限集合,授权时使用
- DefaultWebSecurityManager,安全管理器,开发者自定义的Realm需要注入到DefaultWebSecurityManager进行管理才能生效。
- ShiroFilterFactoryBean,
没有认证的让他去认证,认证成功的根据ta是什么角色,然后赋予ta什么权限
- 与springboot整合 1) 2)自定义shiro过滤器,写在realm里面
- 编写认证和授权规则
认证过滤器:
anon:无需认证 authc: 必须认证 authBasic:需要通过HttpBasic认证 user: 不一定认证通过,只要曾经被shiro记录,比如记住我
授权过滤器
perms:必须拥有某个权限才能访问 role:必须拥有某个角色 port:必须有某个端口值才可以访问 rest:请求必须基于restful ssl:必须是https协议