且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

java安全框架shiro(一)

更新时间:2022-09-10 08:54:47

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

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

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

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

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


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

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

java安全框架shiro(一)

 

 

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

 java安全框架shiro(一)

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

 java安全框架shiro(一)

 

最后给出简单案例的代码

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>