zoukankan      html  css  js  c++  java
  • java安全框架shiro(一)

    第一个简单的案例 ,通过读取.ini文件的方式模拟登陆,

    1.通过Factory工厂的getInstance()方法来获取SecurityManager的实例,实例化Factory需要一个ini文件的路径作为参数;

    2.将上面获取的实例set到 SecurityUtils这个类里,SecurityUtils类有一个get方法来获取Subject类

    3.Subject这个类就是用来登陆和退出的,但是需要一个AuthenticationToken实例作为参数

    上面是步骤,下面就来一步一步的介绍,最后会在最下面给出代码


    第二步我就不说了,方法是静态的,直接类名调用就好了;

    现在来到第三步,现在应该是得到subjiect的实例了,需要登录,但是需要一个token实例

     

    现在token也有了,然后我们进行登录;

     

    这里给出一个.ini文件的基本示例,把这个文件所在的路径填入第一步实例化工厂时的参数里即可

     

    最后给出简单案例的代码

    package com;
    
    import org.apache.shiro.SecurityUtils;
    import org.apache.shiro.authc.AuthenticationToken;
    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;
    
    /**
     * 测试shiro第一个案例
     *
     */
    public class App 
    {
        public static void main( String[] args )
        {
            {
                /*实例化工厂*/
                Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
               /*获取实例*/
                SecurityManager instance = factory.getInstance();
                /*设置参数*/
                SecurityUtils.setSecurityManager(instance);
                /*获取登录实例*/
                Subject subject = SecurityUtils.getSubject();
                /*实例化token,传入登录的用户和密码*/
                AuthenticationToken token = new UsernamePasswordToken("admin1", "admin");
                try {
                    /*进行登录*/
                    subject.login(token);
                    /*退出登录*/
                    subject.logout();
                }catch (Exception e){
                    System.out.println("登录错误!!");
                }
            }
        }
    }

     maven中添加的依赖

    <dependencies>
          <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>1.3.2</version>
          </dependency>
          <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.3.2</version>
          </dependency>
          <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-web</artifactId>
            <version>1.3.2</version>
          </dependency>
          <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-aspectj</artifactId>
            <version>1.3.2</version>
          </dependency>
          <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-ehcache</artifactId>
            <version>1.3.2</version>
          </dependency>
          <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.3</version>
          </dependency>
        </dependencies>
    
    
    
  • 相关阅读:
    [Linux] VIM Practical Note
    [JAVA] JAVA 文档注释
    [JAVA] JAVA 类路径
    [JAVA] JAVA JDK 安装配置
    [Dynamic Language] Python定时任务框架
    [DataBase] MongoDB (8) 副本集
    [DataBase] MongoDB (7) MongoDB 索引
    [DabaBase] MongoDB (6) 启动、停止、相关系统配置及安全性设置
    [Dynamic Language] 用Sphinx自动生成python代码注释文档
    [JAVA] java class 基本定义 Note
  • 原文地址:https://www.cnblogs.com/qq376324789/p/8640651.html
Copyright © 2011-2022 走看看