shiro学习笔记(1)--基础定义

一:shiro基础
(学习地址:https://www.w3cschool.cn/shiro/andc1if0.html)
1、核心概念
这里写图片描述
Authentication:认证
Authorization:授权
SessionManageMent:session管理
Cryptography:加密

2、shiro核心是SecurityManager
这里写图片描述
用户在shiro中表示为主题(subject),通过SecurityManager获取,同时SecurityManager通过域Realm获取数据库中用户校验信息进行校验。特别说明:shiro只负责接收信息并操作,不负责维护数据,用户信息需要自己维护,通过接口传给shiro。
详细流程图:
这里写图片描述
二:默认的IniRealm
1、jar包

<!-- shiro jar -->
	  <dependency>
		  <groupId>org.apache.shiro</groupId>
		  <artifactId>shiro-core</artifactId>
		  <version>1.3.2</version>
	  </dependency>

	  <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
	  <dependency>
		  <groupId>commons-logging</groupId>
		  <artifactId>commons-logging</artifactId>
		  <version>1.2</version>
	  </dependency>

	  <!-- https://mvnrepository.com/artifact/com.mchange/mchange-commons-java -->
	  <dependency>
		  <groupId>com.mchange</groupId>
		  <artifactId>mchange-commons-java</artifactId>
		  <version>0.2.15</version>
	  </dependency>

	  <!-- ehcache jar -->
	  <dependency>
		  <groupId>net.sf.ehcache</groupId>
		  <artifactId>ehcache</artifactId>
		  <version>2.10.2</version>
	  </dependency>

	  <dependency>
		  <groupId>org.apache.shiro</groupId>
		  <artifactId>shiro-spring</artifactId>
		  <version>1.2.3</version>
	  </dependency>

2、main方法

    public static void main(String[] args) {
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro4.ini");
        SecurityManager securityManager = factory.getInstance();
        SecurityUtils.setSecurityManager(securityManager);

        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("kexq","123654");

        subject.login(usernamePasswordToken);
        if(subject.isAuthenticated()){
            System.out.println("认证成功");
        }else{
            System.out.println("认证失败");
        }
    }

3、ini配置文件

#shiro简单配置实例

#主配置
[main]
#用户信息配置
[users]
kexq=123654
ke=123654

三、JdbcRealm的配置方法
1、main

    public static void main(String[] args) {
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro2.ini");
        SecurityManager securityManager = factory.getInstance();
        SecurityUtils.setSecurityManager(securityManager);

        Subject subject = SecurityUtils.getSubject();
        try {
            UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("kexq", "123456");
            subject.login(usernamePasswordToken);
            if (subject.isAuthenticated()) {
                System.out.println("认证成功");
            }
        }catch (Exception e){
            System.out.println("认证失败");
            e.printStackTrace();
        }
    }

2、ini配置
说明:

#shiro jdbcRealm配置实例

[main]
#配置数据源
dataSource=org.apache.commons.dbcp.BasicDataSource
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://127.0.0.1:3306/shiro
dataSource.username=root
dataSource.password=123456

#配置realm $表示引用对象
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource=$dataSource

#配置securityManager
securityManager.realm=$jdbcRealm

3、数据库表
这里写图片描述
4、说明:
(1)数据库表名和字段名必须按规范来(由jdbcRealm默认)
(2)ini配置文件规范:通过$表示引用对象
(3)附jdbcRealm部分源码
这里写图片描述

猜你喜欢

转载自blog.csdn.net/cccp_2009/article/details/82621977
今日推荐