给一个java写的shiro实例
时间: 2023-04-10 17:04:52 浏览: 191
以下是一个简单的 Java Shiro 实例:
```
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
public class ShiroExample {
public static void main(String[] args) {
// 创建 SecurityManager 工厂,用于加载配置文件并创建 SecurityManager 实例
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
// 创建 SecurityManager 实例
SecurityManager securityManager = factory.getInstance();
// 将 SecurityManager 实例绑定到 SecurityUtils 中,方便全局使用
SecurityUtils.setSecurityManager(securityManager);
// 获取当前用户
Subject currentUser = SecurityUtils.getSubject();
// 创建一个用户名/密码验证 Token
UsernamePasswordToken token = new UsernamePasswordToken("username", "password");
try {
// 登录
currentUser.login(token);
System.out.println("登录成功!");
} catch (UnknownAccountException uae) {
System.out.println("用户名不存在!");
} catch (IncorrectCredentialsException ice) {
System.out.println("密码错误!");
} catch (LockedAccountException lae) {
System.out.println("账户被锁定!");
} catch (AuthenticationException ae) {
System.out.println("登录失败!");
}
// 退出
currentUser.logout();
}
}
```
这个例子使用了 Shiro 的 INI 配置文件来配置安全策略,其中包括了用户、角色、权限等信息。在登录时,我们创建了一个用户名/密码验证 Token,并通过 SecurityUtils 获取当前用户,然后调用 currentUser.login(token) 方法进行登录验证。如果登录成功,我们就可以执行一些需要认证的操作,比如访问受保护的资源。最后,我们调用 currentUser.logout() 方法退出登录。
阅读全文