何为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负责实现认证,上面代码的的逻辑为下
将数据源修改为数据库数据源
后面更新!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)