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

何为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.在测试类完成认证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private Logger log = LoggerFactory.getLogger(ShiroTest.class);
 
//模拟用户登录
String username = "xiaohei";
String password = "123123";
 
@Test
public void test1() {<br>
    //读取配置文件数据给subject
    IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:shiro.ini");<br>
    //安全管理器  可以理解为把配置文件封装到安全管理器内
    SecurityManager instance = factory.getInstance();<br>
    //给工具类设置安全管理器
    SecurityUtils.setSecurityManager(instance);<br>
    //获取主体,subject为了保证单例,通过工具类获取
    Subject subject = SecurityUtils.getSubject();<br>
    //将需要验证的信息 封装到token
    UsernamePasswordToken token = new UsernamePasswordToken(username, password);<br>
    //通过调用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   一段枯-有猫版  阅读(248)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
 
欢迎这位怪蜀黍来到《shiro基础教程 - 一段枯-有猫版 - 博客园》
点击右上角即可分享
微信分享提示