搭建一个maven的shiro十分钟快速上手完整测试项目
时间: 2024-03-19 17:43:54 浏览: 14
好的,以下是搭建一个 Maven 的 Shiro 十分钟快速上手完整测试项目的步骤:
1. 创建 Maven 项目
首先,我们需要创建一个 Maven 项目。可以使用 Eclipse、IntelliJ IDEA 等 IDE,也可以使用 Maven 命令行创建。这里我使用 IntelliJ IDEA 创建 Maven 项目。
在 IntelliJ IDEA 中,选择 File -> New -> Project,在弹出的窗口中选择 Maven,然后点击 Next。
在 Create Maven Project 窗口中,填写 GroupId、ArtifactId 和 Version,然后点击 Next。
接着,在 New Project 窗口中,填写项目名称和项目路径,然后点击 Finish。
2. 添加 Shiro 依赖
在 pom.xml 文件中添加 Shiro 依赖:
```xml
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.7.1</version>
</dependency>
```
3. 配置 Shiro
在 src/main/resources 目录下创建 shiro.ini 文件,配置 Shiro:
```ini
[users]
# 用户名 = 密码, 角色1, 角色2, ...
admin = admin123, admin
guest = guest123, guest
[roles]
# 角色名 = 权限1, 权限2, ...
admin = *
guest = user:read
[urls]
# URL = 过滤器1, 过滤器2, ...
/ = anon
/login = anon
/logout = logout
/admin/** = authc, roles[admin]
/user/** = authc, roles[guest]
```
以上配置文件定义了两个用户 admin 和 guest,admin 拥有 admin 角色,guest 拥有 guest 角色。admin 角色拥有所有权限,guest 角色只有 user:read 权限。配置了一些 URL 的访问规则,例如 /admin/** 表示必须登录并且拥有 admin 角色才能访问。
4. 编写测试代码
在 src/test 目录下创建一个测试类,编写测试代码:
```java
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
import org.junit.Test;
public class ShiroTest {
@Test
public void testLogin() {
// 读取 shiro.ini 配置文件,并创建 SecurityManager
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
// 获取当前用户
Subject currentUser = SecurityUtils.getSubject();
// 登录
UsernamePasswordToken token = new UsernamePasswordToken("admin", "admin123");
currentUser.login(token);
// 判断是否登录成功
assert currentUser.isAuthenticated();
// 判断是否拥有 admin 角色
assert currentUser.hasRole("admin");
// 判断是否拥有 user:read 权限
assert currentUser.isPermitted("user:read");
// 退出登录
currentUser.logout();
// 判断是否退出成功
assert !currentUser.isAuthenticated();
}
}
```
以上测试代码首先读取 shiro.ini 配置文件,并创建 SecurityManager。然后获取当前用户,使用 admin 用户登录,判断登录是否成功,判断是否拥有 admin 角色和 user:read 权限,退出登录,判断是否退出成功。
5. 运行测试
在 IntelliJ IDEA 中,可以直接运行测试类,或者使用 Maven 命令运行测试:
```
mvn test
```
测试结果应该全部通过。
至此,一个 Maven 的 Shiro 十分钟快速上手完整测试项目就搭建好了。