shiro学习笔记

shiro学习笔记

最近几天刚看了shiro的教学视频,有些感悟和心得:

  • shiro的核心功能是认证、授权、缓存、加密等
  • shiro的门面是subject,即所谓的主体,跟外界打交道的就是它
  • 在者就是安全管理器,securityManager,它用来定义realm
  • realm被成为安全实体数据源,认证和授权都是在realm里面实现

(1)认证
       简单来说,就是shiro提供拦截器,用户想要访问一些不对匿名用户开发的页面,就必须通过拦截器的认证,用得最多的就是登录,一般来说,我们会把登陆页面设置为anon,即匿名用户可以访问,其他页面设置为authc,即用户必须通过认证才能访问。说的认证,shiro支持多realm认证,即可以经过多重认证,并且认证的策略有三个,分别为至少一个认证通过则算通过、第一个认证通过则算通过、所有都认证通过才可以算认证通过,有了这个特性,我们可以用它来实现用户名or邮箱or手机号与密码的登陆,只要写三个realm,分别来验证用户名、邮箱、手机号,只要有一个认证通过则算通过。这大大省去了很多步骤。

(2)授权
       当不同角色登录系统的时候,我们往往需要给予不同用户不用的权限,即所谓的授权。shiro可以给页面配置权限,比如user.jsp和list.jsp,我们通过shiro配置权限,user.jsp需要有管理员角色的身份才能访问,list.jsp需要有超级管理员的权限才能权限,接着我们可以给张三授予超级管理员的权限,给李四设置普通管理员权限,则张三可以访问user和list两个页面,李四只能访问user页面。
       不仅可以对页面及进行授权,也可以对方法进行授权,这个是我觉得蛮好的一个功能,增加了系统的安全性。

(3)缓存
       shiro页面自己的缓存,相较于httpsession,httpsession只能在控制器使用,不能在service使用,不然就违反了代码规范(api层不能调用httpsession)。但是shiro缓存也没有这个限制,不仅可以在控制器层使用缓存,也可以在service使用,大大提高了可扩展性。
       缓存还可以用来实现记住我功能,我们常常可以看到一些网站在登录页面有记住我的选项,这样我们就不用每次访问一些网站都要输入用户名和密码登录,过于繁琐。shiro实现原理是后端设置subject.setRemember(true),这样我们首次认证通过之后,就被系统记住了,这样我们只要登录之后,一定时间内都可以不用在登录,shiro记住我的时间也可以设置的。

(4)加密
       我们常常在开放过程中需要对一些保密性较强的数据进行加密,比如密码。举个例子,我们在数据库保存用户的密码用加密后的,那么用户在页面上输入的是明文,我们在认证过程中需要进行加密再与数据库取出的密码进行比较,最常见的加密方式是md5加密,shiro可以支持md5、sha1等多种加密方式,最特别的是虽然md5加密是不可逆的,但是相同的密码加密后的串都是一样的,这也存在隐患,shiro可以很多的解决这个问题,shiro支持盐值加密,我们通过设置唯一的盐值来加密,比如用户名,这样加密出来的字符串就是唯一的,大大提高了安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值