何为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.在测试类完成认证
private Logger log = LoggerFactory.getLogger(ShiroTest.class);
//模拟用户登录
String username = "xiaohei";
String password = "123123";
@Test
public void test1() {
//读取配置文件数据给subject
IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//安全管理器 可以理解为把配置文件封装到安全管理器内
SecurityManager instance = factory.getInstance();
//给工具类设置安全管理器
SecurityUtils.setSecurityManager(instance);
//获取主体,subject为了保证单例,通过工具类获取
Subject subject = SecurityUtils.getSubject();
//将需要验证的信息 封装到token
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
//通过调用subject的login方法判断token中的信息是否匹配安全管理器中的认证信息
try {
subject.login(token);
log.info("认证成功");
} catch (UnknownAccountException e) {
log.error("用户不存在");
} catch (IncorrectCredentialsException e) {
log.error("账号或密码不正确");
}
}
注意:token中封装的是需要验证的信息,shiro通过抛异常的方式判断是否登录成功,UnknownAccountException 账号不存在,IncorrectCredentialsException 密码不正确
总结:
用户输入验证信息,shiro负责实现认证,上面代码的的逻辑为下

将数据源修改为数据库数据源
后面更新!!!

浙公网安备 33010602011771号