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编辑  收藏  举报

导航