Shiro简介及简单入门demo

目录树

  • Shiro
    • 1.什么是Shiro
      • 1.1 Shiro模块内容具体意义
      • 1.2 Shiro中的认证
      • 1.3 认证流程图
    • 2.Shiro入门demo
      • 2.1 导shiro的jar包
      • 2.2 扫描路径
      • 2.3 创建ini文件
      • 2.4 测试类shiroTest

Shiro

安全框架:简单说对访问权限进行控制,安全性包括用户认证用户授权
用户认证一般要求用户提供用户名和密码,系统通过校验两者来完成认证。
用户授权指验证某个用户是否有权限执行某个操作。
一般来说,系统会为不同的用户分配不同的角色,而每个角色对应一系列权限。

1.什么是Shiro

Shiro是apache的一个开源框架,将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权,加密,会话管理等,组成一个通用的安全认证框架。
Shiro简介及简单入门demo_第1张图片

1.1 Shiro模块内容具体意义

  • Subject

即“当前操作用户”,不仅指“人”,也可以是“第三方进程”、“后台账户”。仅仅意味“当前跟软件交互的东西”。

Subject代表当前用户的安全操作,SecurityManager则管理所有用户的安全操作。

  • SecurityManager

shiro框架的核心,shiro通过SecurityManager来管理内部组件实例,并通过它提供安全管理的各种服务。

  • Realm

Realm是Shiro与应用安全数据 间的“桥梁”或者“连接器”。
Shiro简介及简单入门demo_第2张图片

1.2 Shiro中的认证

1.2.1 认证
身份认证,就是判断一个用户是否为合法用户的处理过程。
1.2.2 shiro中认证的关键对象

  • Subject 主体
    访问系统的用户,主体可以是用户、进程等,即进行认证的都称为主体。
  • Principal 身份信息
    是主体Subject进行身份认证的标识,标识具有唯一性,如用户名、手机号、邮箱等。一个主体可以有多个身份,但必须有一个主身份。
    credential:凭证信息
    是主体自己知道的安全信息,如:密码、证书等。

1.3 认证流程图

Shiro简介及简单入门demo_第3张图片

2.Shiro入门demo

先创建一个maven项目。
Shiro简介及简单入门demo_第4张图片

大体4步
1.加入shiro的jar包
2.加入扫描路径—自定义的ini文件,因为这个demo不连接数据库
3.创建ini虚拟数据库文件
4.编写测试类shiroTest.java

2.1 导shiro的jar包

	
      org.apache.shiro
      shiro-core
      1.5.3
    

    
    
      org.slf4j
      slf4j-simple
      1.7.25
      test
    

2.2 扫描路径

这是为了让idea知道模拟数据库文件的路径在哪里,因为项目不连接数据库

	
    
      
        /src/main/resources
      
    

2.3 创建ini文件

Shiro简介及简单入门demo_第5张图片
Shiro简介及简单入门demo_第6张图片
这个文件编码格式为:UTF-8、ANSI。

2.4 测试类shiroTest

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());

    }
}

结果:
Shiro简介及简单入门demo_第7张图片
如果传过来的密码和ini文件密码不一致就会报错。
在这里插入图片描述
密码不一致,报错!
Shiro简介及简单入门demo_第8张图片

你可能感兴趣的:(java,java,前端,运维,数据库,开发语言)