0.Shrio认证

2018-10-15  本文已影响0人  勤劳的杯子

Shrio认证流程图


image.png
<dependency>
       <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-nop</artifactId>
          <version>1.7.2</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.SimpleAccountRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Before;
import org.junit.Test;

public class AuthentiationTest {

    SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();

    @Before
    public void addUser(){
        //模拟用户
        simpleAccountRealm.addAccount("gouDan","123456");
    }
    @Test
    public void testAuthentiation(){
        //构建SecurityManager环境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        //添加认证凭证
        defaultSecurityManager.setRealm(simpleAccountRealm);
        //主体提交认证请求
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        Subject subject = SecurityUtils.getSubject();

        UsernamePasswordToken token = new UsernamePasswordToken("gouDan","123456");
        //登入
        subject.login(token);
        System.out.println(subject.isAuthenticated());
        //登出
        subject.logout();
        System.out.println(subject.isAuthenticated());
    }
}

需要注意

  • 用户名不正确会抛出
    UnknownAccountException
  • 密码不正确会抛出
    IncorrectCredentialsException
上一篇 下一篇

猜你喜欢

热点阅读