zoukankan      html  css  js  c++  java
  • Shiro笔记---身份验证

     

       1.shiro有哪些主要功能

        

       2.搭建shiro环境(*)

        idea2018.2、maven3.5.4、jdk1.8

        

        项目结构:

             

     

      pom.xml:

    <dependencies>
            <!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-core -->
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-core</artifactId>
                <version>1.2.4</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.12</version>
            </dependency>
    
            <!--mysql的驱动包-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
    
            <!--数据库连接池:c3p0、dbcp、druid-->
            <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.10</version>
            </dependency>
    
            <!--日志-->
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
            </dependency>
    
        </dependencies>

     

     

    1. 创建一个shiro.ini文件在resources目录下
      [users]
      admin=123456
      lisi=123
      wangwu=1234
    2. 创建ShiroDemo.java
      package cn.java.shiro;
      
      import org.apache.shiro.SecurityUtils;
      import org.apache.shiro.authc.AuthenticationException;
      import org.apache.shiro.authc.UsernamePasswordToken;
      import org.apache.shiro.config.IniSecurityManagerFactory;
      import org.apache.shiro.mgt.SecurityManager;
      import org.apache.shiro.subject.Subject;
      import org.apache.shiro.util.Factory;
      
      import java.net.SocketOptions;
      
      public class ShiroDemo {
          public static void main(String[] args) {
              //SecurityManager--->Factory
              // Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");   调用数据库
              // Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:jdbc_realm.ini");
              //1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager
               Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
      
              //ctrl+alt+v  快速生成变量及对应的数据类型
              //2、得到SecurityManager实例 并绑定给SecurityUtils
              SecurityManager instance = factory.getInstance();
              SecurityUtils.setSecurityManager(instance);
      
              //当前用户
              /*3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)*/
              Subject user = SecurityUtils.getSubject();
              //通过UsernamePasswordToken来模拟html/jsp传递过来的用户名与密码
              UsernamePasswordToken token = new UsernamePasswordToken("admin","123]");
              //通过shiro来判断用户是否登录成功   ctrl+alt+t捕获异常
      
              try {
                  //4、登录,即身份验证
                  user.login(token);
                  System.out.println("登录成功");
              } catch (AuthenticationException e) {
                  //5、身份验证失败
                  System.out.println("登录失败");
              }
      
          }
      }
    3. 连接数据库把配置文件改成  jdbc_realm.ini:

      jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
      
      dataSource=com.alibaba.druid.pool.DruidDataSource
      dataSource.driverClassName=com.mysql.jdbc.Driver
      dataSource.url=jdbc:mysql:///shiro
      dataSource.username=root
      dataSource.password=root
      
      jdbcRealm.dataSource=$dataSource
      securityManager.realms=$jdbcRealm

       

  • 相关阅读:
    <Redis> 入门六 主从复制方式的集群
    <Redis> 入门五 持久化RBD/AOF
    <Redis> 入门四 Jedis操作Redis
    <Redis> 入门三 事务
    <Redis> 入门X 分布式锁
    <Redis> 入门二 五种数据类型的操作、通用key的操作、发布订阅
    <Redis> 入门一 概念安装
    <Linux> 下安装和卸载JDK
    <ActiveMQ>
    <linux>入门
  • 原文地址:https://www.cnblogs.com/zyulike/p/9669736.html
Copyright © 2011-2022 走看看