一段枯  
自认惊叹的桥段,终沦为老生常谈。

何为shiro?

 Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理。这篇文章主要讲解shiro的认证和授权。

何为认证?

认证:可以理解为登录,验证用户是否为系统合法用户的过程即为认证,也叫做身份认证,常见的认证方式有:用户名密码验证,第三方登录,手机号,刷卡,公交车二维码,指纹,面部识别等等。

下面直接上代码  

新建一个maven项目  

1.导入依赖

<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-spring</artifactId>
  <version>1.3.2</version>
</dependency>

 由于shiro的默认数据源是配置文件数据源,所有我们先用配置文件模拟数据库

2.在测试类完成认证

    private Logger log = LoggerFactory.getLogger(ShiroTest.class);
    
    //模拟用户登录
    String username = "xiaohei";
    String password = "123123";

    @Test
    public void test1() {
//读取配置文件数据给subject IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//安全管理器 可以理解为把配置文件封装到安全管理器内 SecurityManager instance = factory.getInstance();
//给工具类设置安全管理器 SecurityUtils.setSecurityManager(instance);
//获取主体,subject为了保证单例,通过工具类获取 Subject subject = SecurityUtils.getSubject();
//将需要验证的信息 封装到token UsernamePasswordToken token = new UsernamePasswordToken(username, password);
//通过调用subject的login方法判断token中的信息是否匹配安全管理器中的认证信息 try { subject.login(token); log.info("认证成功"); } catch (UnknownAccountException e) { log.error("用户不存在"); } catch (IncorrectCredentialsException e) { log.error("账号或密码不正确"); } }

  注意:token中封装的是需要验证的信息,shiro通过抛异常的方式判断是否登录成功,UnknownAccountException 账号不存在,IncorrectCredentialsException 密码不正确

总结:

  用户输入验证信息,shiro负责实现认证,上面代码的的逻辑为下

 

将数据源修改为数据库数据源

后面更新!!!

  

 

posted on 2021-11-04 17:08  int苦味  阅读(269)  评论(0)    收藏  举报
 
……