shiro——SimpleAuthenticationInfo中的参数

/**
	 * 执行认证逻辑
	 */
	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException {
        System.out.println("执行认证逻辑");
        
        UsernamePasswordToken token = (UsernamePasswordToken) arg0;
        
        User user = userService.findUserByName(token.getUsername());
        
        if(user==null) {
        	//用户名不存在
        	return null;
        }
        
        //密码不存在
        return new SimpleAuthenticationInfo(user,user.getPassword(),"");
	}

其中:SimpleAuthenticationInfo中可以传三个参数也可以传四个参数。

第一个参数:传入的都是com.java.entity包下的User类的user对象

        注意:此参数可以通过subject.getPrincipal()方法获取—获取当前记录的用户,从这个用户对象进而再获取一系列的所需要的属性。

Subject subject = SecurityUtils.getSubject();

User user = (User) subject.getPrincipal();

第二个参数:  传入的是从数据库中获取到的password,然后再与token中的password进行对比,匹配上了就通过,匹配不上就报异常。

第三个参数,盐–用于加密密码对比。 若不需要,则可以设置为空 “ ”

第四个参数:当前realm的名字。

 

第一个参数只是一个身份表示 ,有的可以使user,也可以是username,反正都是数据库里查出来的,第二个参数才是重点,shiro中会用调用AuthenticatingRealm类里的assertCredentialsMatch()方法再调用到CredentialsMatcher里的doCredentialsMatch()方法,这里面用重写的equals比较的第二个参数,所以第一个参数没啥用,但它的构造方法里还必须要有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值