身份认证
在应用中用户怎么证明自己的身份,一般需要提供一些凭据,最常见的如用户名、密码等。在shiro中需要用户提供Principals(身份)和credentials(证明)
Principals:身份,标识主体。如手机号、邮箱、用户名等。
Credentials:证明,和安全主体对应的值,密码证书等。
ini文件
在第二章,原书使用了ini配置文件,来配置Realm。 ini是初始化initialization File的简写,是windows下的初始文件的存储形式,常用于一些默认配置。
由 节、键、值组成,使用;表示注释
使用 [section]表示节 键=值的形式
比如shiro的一个ini配置:指定了一组用户名和密码的关系
;这是一个简单的用户配置
[users]
zhangsan=zhangsan123
wang=123
一个简单的认证过程:
public class MyDemo {
public static void main(String[] args) {
{
//工厂模式 获取SecurityManagerFactory
IniSecurityManagerFactory iniSecurityManagerFactory = new IniSecurityManagerFactory(“classpath:shiro-realm.ini”);
//获取一个实例
SecurityManager instance = iniSecurityManagerFactory.getInstance();
//设置SecurityUtil
SecurityUtils.setSecurityManager(instance);
//获取Subject和token
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token=new UsernamePasswordToken(“zhangsan”,“zhangsan”);
try {
//登录
subject.login(token);
}catch (AuthenticationException e){
e.printStackTrace();
}
boolean authenticated = subject.isAuthenticated();
System.out.println(authenticated);
//登出
subject.logout();
}
}
}