安全框架:简单说对访问权限进行控制,安全性包括用户认证和用户授权。
用户认证一般要求用户提供用户名和密码,系统通过校验两者来完成认证。
用户授权指验证某个用户是否有权限执行某个 *** 作。
一般来说,系统会为不同的用户分配不同的角色,而每个角色对应一系列权限。
Shiro是apache的一个开源框架,将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权,加密,会话管理等,组成一个通用的安全认证框架。
Subject
即“当前 *** 作用户”,不仅指“人”,也可以是“第三方进程”、“后台账户”。仅仅意味“当前跟软件交互的东西”。
Subject代表当前用户的安全 *** 作,SecurityManager则管理所有用户的安全 *** 作。
SecurityManager
shiro框架的核心,shiro通过SecurityManager来管理内部组件实例,并通过它提供安全管理的各种服务。
Realm
Realm是Shiro与应用安全数据 间的“桥梁”或者“连接器”。
1.2.1 认证
身份认证,就是判断一个用户是否为合法用户的处理过程。
1.2.2 shiro中认证的关键对象
Subject 主体
访问系统的用户,主体可以是用户、进程等,即进行认证的都称为主体。Principal 身份信息
是主体Subject进行身份认证的标识,标识具有唯一性,如用户名、手机号、邮箱等。一个主体可以有多个身份,但必须有一个主身份。
credential:凭证信息
是主体自己知道的安全信息,如:密码、证书等。
1.3 认证流程图
先创建一个maven项目。
2.1 导shiro的jar包大体4步
1.加入shiro的jar包
2.加入扫描路径—自定义的ini文件,因为这个demo不连接数据库
3.创建ini虚拟数据库文件
4.编写测试类shiroTest.java
2.2 扫描路径org.apache.shiro shiro-core1.5.3 org.slf4j slf4j-simple1.7.25 test
这是为了让idea知道模拟数据库文件的路径在哪里,因为项目不连接数据库
2.3 创建ini文件/src/main/resources
这个文件编码格式为:UTF-8、ANSI。
public class TestShiro { public static void main(String[] args) { System.out.println("shiro简单入门测试------"); //1.创建安全管理器对象 DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager(); //2.给安全管理器对象设置realm(引入安全数据的文件) //就是把自己定义好的realm文件加进来,用来验证规则,就加入到我们的安全管理器中 defaultSecurityManager.setRealm(new IniRealm("classpath:shiro.ini")); //3.安全工具设置安全管理器 //即把安全管理器加入到安全工具中去 SecurityUtils.setSecurityManager(defaultSecurityManager); //4.通过安全工具获取用户主体 主体可以使scanner传入的,也可以页面传入的 Subject subject = SecurityUtils.getSubject(); //------------------以上相当于我们的后端验证 //把配置文件上的用户信息获取出来放入令牌中 //5.这个就是我们的令牌(里面带着我们的信息) 即相当于前端传过来的信息 UsernamePasswordToken token = new UsernamePasswordToken("yty","123123"); //目前安全管理器里的信息和第5步中的令牌的信息 没有 联系在一起 System.out.println("没有认证之前。。。。。。。"); System.out.println(subject.isAuthenticated());//判断subject有没有认证 //只需要一个subject.login(token);即可联系起来 //开始认证 System.out.println("进行认证-----------"); subject.login(token); System.out.println(subject.isAuthenticated()); } }
结果:
如果传过来的密码和ini文件密码不一致就会报错。
密码不一致,报错!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)