shiro入门

1.shiro简介

  Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

2.主要功能

三个核心组件:Subject, SecurityManager 和 Realms.
Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。
  Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
  SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
  Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
  从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
  Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。
  

3.Shiro入门Helloword

      步骤:

  3.1.构建基本maven项目

  

  3.2.添加必要的maven依赖

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.wfd360.shiro-demo</groupId>
 8     <artifactId>shiro-demo</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10     <dependencies>
11         <dependency>
12             <groupId>org.apache.shiro</groupId>
13             <artifactId>shiro-core</artifactId>
14             <version>1.3.2</version>
15         </dependency>
16 
17     </dependencies>
18 
19 </project>
View Code
复制代码

  3.3.添加账号信息(模拟数据库账号)

   

  3.4.helloWord程序

复制代码
 1 package com.wfd360.shiro;
 2 
 3 import org.apache.shiro.SecurityUtils;
 4 import org.apache.shiro.authc.AuthenticationException;
 5 import org.apache.shiro.authc.UsernamePasswordToken;
 6 import org.apache.shiro.config.IniSecurityManagerFactory;
 7 import org.apache.shiro.mgt.SecurityManager;
 8 import org.apache.shiro.subject.Subject;
 9 import org.apache.shiro.util.Factory;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
12 
13 
14 /**
15  * address: www.wfd360.com
16  */
17 public class HelloShiro {
18     private static Logger logger = LoggerFactory.getLogger(HelloShiro.class);
19 
20     public static void main(String[] args) {
21         //IniSecurityManagerFactory方法在1.4.0中被注解标志为不建议使用
22         // 读取配置文件,初始化SecurityManager工厂
23         Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
24         //获取securityManager 实例
25         SecurityManager securityManager = factory.getInstance();
26         //把securityManager实例绑定到SecurityUtils
27         SecurityUtils.setSecurityManager(securityManager);
28         //得到当前执行的用户
29         Subject subject = SecurityUtils.getSubject();
30         //认证实体,当前进来的用户
31         // 创建token令牌,用户名/密码
32         UsernamePasswordToken token = new UsernamePasswordToken("jack", "12345");
33         //身份认证
34         try {
35             subject.login(token);
36             logger.info("登录成功!");
37         } catch (AuthenticationException e) { //login的接口函数
38             //void login(AuthenticationToken var1) throws AuthenticationException;所以直接抓AuthenticationException异常即可 /
39             // 身份认证失败即抛出此异常
40             logger.info("登录失败!");
41             e.printStackTrace();
42         }
43         //登出
44         subject.logout();
45     }
46 }
View Code
复制代码

 

  3.5运行main方法测试。

     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
posted @   李东平|一线码农  阅读(307)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示