你绝对想不到多简单的Shiro的入门

首先加入Maven依赖

<dependency>
      <groupId>org.apache.shirogroupId>
      <artifactId>shiro-coreartifactId>
      <version>1.4.0version>
dependency>

<dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>4.12version>
dependency>

然后是代码:

public class ShiroHelloWorld {

    /**
     * shiro认证的步骤
     *
     * 1. 构建创建SecurityManager
     * 2. 主体提交认证
     * 3. SecurityManager认证
     * 4. Authenticator认证
     * 5. Realm验证
     * @param args
     */
    //先使用简单的Realm来验证
    private  SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();

    @Before
    public void addUser(){
        simpleAccountRealm.addAccount("mark","123456"); //Realm可以添加多个账户
        //现在只是入门,使用的是简单的Realm,之后会有更符合业务逻辑的Realm出现
        simpleAccountRealm.addAccount("wangye","123456");
    }

    @Test
    public void testAutheticateion(){
        //1. 构建SecurityManager环境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        defaultSecurityManager.setRealm(simpleAccountRealm); //因为最终式使用Realm来验证,所以要设置Realm

        //2. 主体提交认证
        SecurityUtils.setSecurityManager(defaultSecurityManager);//先设置认证环境
        Subject subject = SecurityUtils.getSubject();
        //家下来就是登陆了,如果传入的用户名不正确,和Realm中的不匹配,那么久会异常
        UsernamePasswordToken token = new UsernamePasswordToken("wangye","123456");
        subject.login(token);
        System.out.println("是否登陆成功:"+ subject.isAuthenticated());//true
        //登陆就有登出
        subject.logout();
        System.out.println("是否验证成功:"+ subject.isAuthenticated());//false
    }
}

需要搞清的是,shiro是如下完成步骤的。subject.login(token);这样使用用户信息验证登录验证的时候,我们的subject会把验证的的任务移交给securityManager.login(token)完成 ,而securityManager又会把任务交给authenticate
然后,authenticate就会从Realm去数据进行比对,然后返回有还是没有。

你可能感兴趣的:(框架技术)