1.shiro的基本概念
2.权限数据库设计(今天暂未涉及)
用户表user
uid username password
角色表role
rid rname(超级管理员,部门经理,普通员工)
权限表permission
pid pname(添加用户,查询用户,删除用户)
用户角色对应关系
uid rid
角色和权限的对应关系
rid pid
3.第一个程序
jar包
ini配置文件(建立一个file文件,改后缀,然后拖上来)
测试类
测试:
4.自定义Realm(领域)(自己来定义验证方法)
建立MyReanlm类,继承AuthorizingRealm(授权范围、授权领域)
重写授权领域类的两个方法,一个是授权方法,一个是认证方法。这里只写认证方法,自定义如何做登陆验证。
配置文件
测试类:
运行时发现如下错误,是因为少导了两个包。
导入这两个包。
加入了这两个包后,测试正常。
散列算法(就是之前的md5)
另一种加密方法,两种加密的结果是一样的。
这里重新自定义一下认证方法,重新模拟一下登陆,通过md5加密过的认证方法。
配置文件就要修改了,把md5需要的几个参数配进去
框架获取到了认证信息以后,以前的Realm有了凭证匹配器,将token中的原始密码通过凭证匹配器中指定的散列算法和迭代次数加上认证信息里面的盐值,进行加密计算,计算的结果和hashedCredentials进行比较。
第一次测试的时候出现了未知错误。
当把这个未知错误注释了之后
发现是空指针异常
经过检查发现问题:
修改成字符串之后即可顺利运行。
授权之使用固定的配置文件。
这样方便之后涉及到数据库的时候,可以通过数据库查出的内容给某个用户设置权限。
通过 Rrealm 自定义授权
在这MyRealm里面的授权方法里面添加如下方法。
通过这个方法,给符合条件的用户(这里就是验证通过的用户)赋予了两个权限
配置文件