shiro之 shiro实现用户认证
1. Authentication:用户认证:验证用户是否合法
需要提交身份和凭证给shiro
principals用户的身份信息,是Subject的标识属性。能够唯一标识Subject。如:电话号码,电子邮件,身份证号码等。
Credentials凭证:密码。是只被subject知道的秘密值,可以是密码,也可以是数字证书等。
principals/Credentials 最常见的组合:用户名/密码,在shiro中通常使用UserpaddwordToken来指定身份和凭证信息。
2. 在shiro中用户的认证流程:
3.代码实现:
a.新建java项目:
b.导入shiro包:
commons-beanutils-1.9.2.jar commons-logging-1.2.jar log4j-1.2.17.jar shiro-all-1.2.3.jar slf4j-api-1.7.7.jar slf4j-log4j12-1.7.5.jar
c.编写shiro的数据文件--配置,放于src下shiro.ini
[users] zhangsan=1111 lisi=1111
d. 编写测试点代码。
/** * 完成用户认证功能 */ public class AuthenticationDemo { public static void main(String[] args) { //1、创建SecurityManager工厂 读取相应的配置文件 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); //2.通过SecurityManager工厂获取SecurityManager的实例 SecurityManager securityManager = factory.getInstance(); //3.将securityManager对象 设置到运行环境中 SecurityUtils.setSecurityManager(securityManager); //4.通过SecurityUtils获取主体Subject Subject subject = SecurityUtils.getSubject(); //5.假如登录的用户名 zhangsan和1111,这个地方的zhagnsan和1111表示用户登录时输入的信息 //而shiro.ini文件中信息 相当于数据库中存放的用户信息 UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "1111"); //6.进行用户身份验证 subject.login(token); //7.通过subject来判断用户是否通过验证 if(subject.isAuthenticated()){ System.out.println("用户登录成功"); }else{ System.out.println("用户名或密码不正确"); } } }
posted on 2017-05-15 10:07 forever_2h 阅读(210) 评论(0) 编辑 收藏 举报