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

首先加入Maven依赖

<dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-core</artifactId>
      <version>1.4.0</version>
</dependency>

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
</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去数据进行比对,然后返回有还是没有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值