shiro学习笔记二-----基础知识

Shiro的3个核心组件:

这里写图片描述

Subject :可以看作当前用户操作。

SecurityManager : 用于管理所有的Subject 。

Realms : 用于进行权限信息的验证,需要自己实现的,类似于数据库,至少要设置一个,可以设置多个。需要实现Realms的Authentication 和 Authorization。


认证实现

Shiro的认证过程最终会交由Realm执行,这时会调用Realm的getAuthenticationInfo(token)方法。

该方法主要执行以下操作:

1、检查提交的进行认证的令牌信息

2、根据令牌信息从数据源(通常为数据库)中获取用户信息

3、对用户信息进行匹配验证。

4、验证通过将返回一个封装了用户信息的AuthenticationInfo实例。

5、验证失败则抛出AuthenticationException异常信息。

我们需要自己写realm类,继承AuthorizingRealm,重载doGetAuthenticationInfo (),重写获取用户信息的方法


Shiro可以对以下4个方面进行安全控制:

Authentication : 用来验证用户身份,可以理解为登录操作。

Authorization : 授权访问控制,用于对用户进行授权,证明该用户是否允许进行当前操作,如访问某个URL,某个Resource等。

SessionManager:通过Shiro 提供的会话管理来获取Session中的信息,如:sso单点登录,进行session共享。

Cryptography: 密码管理,加密操作,shiro内部提供了使用MD5加密的方法,也可以自定义加密的方法。


完整架构图:

这里写图片描述

Shiro的核心:

ShiroFilterFactory:Shiro过滤器工厂类,具体的实现类是:ShiroFilterFactoryBean,此实现类是依赖于SecurityManager安全管理器。

SecurityManager:Shiro的安全管理,主要是身份认证的管理,缓存管理,cookie管理,所以在实际开发中我们主要是和SecurityManager进行打交道的,ShiroFilterFactory主要配置好了Filter就可以了。

Realm:用于身份信息权限信息的验证,类似于从数据库中读取数据。

Cache Manager(缓存管理):记住登录信息,登录用户所拥有的权限,总是从数据库中查询,效率很低,需要自己进行简单的实现,然后注入到SecurityManager让Shiro的安全管理器进行管理就好了。shiro提供了Ehcache的缓存管理,也可以使用Redis进行缓存管理。使用redis需要自己编写方法RedisCacheManager实现CacheManager接口。


Shiro内置的FilterChain:

Filter Name     |       Class
----------------|--------------------------------------------------------------------------
anon            |       org.apache.shiro.web.filter.authc.AnonymousFilter
authc           |       org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authcBasic      |       org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
perms           |       org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter
port            |       org.apache.shiro.web.filter.authz.PortFilter
rest            |       org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter
roles           |       org.apache.shiro.web.filter.authz.RolesAuthorizationFilter
ssl             |       org.apache.shiro.web.filter.authz.SslFilter
user            |       org.apache.shiro.web.filter.authc.UserFilter

通常可将过滤器分为两组 :
anon,authc,authcBasic,user : 第一组认证过滤器

anon: 所有url都都可以匿名访问;
authc: 需要认证才能进行访问;
authcBasic: 表示httpBasic认证
user: 配置remenberMe或认证通过可以访问

perms,port,rest,roles,ssl : 第二组授权过滤器

perms: perms[userInfo:view]表示用户必须通过认证,并且需要拥有userInfo:view的权限,才可以访问/userInfo
port : 根据端口号,port[8080]表示访问URL端口如果不是8080,怎会跳转到8080端口
rest:根据请求的方法,rest[user]相当于prems[user:method]
ssl: 根据安全的URL请求,协议是https

注意:user和authc不同,user表示不一定通过了认证,只要被shiro的remenberMe记住过登录状态,就可以访问,而authc必须要进行认证之后才可以访问。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值