shiro 自定义的realm中service的方法无法执行

[复制链接]
查看11 | 回复3 | 2021-1-27 07:03:57 | 显示全部楼层 |阅读模式
以下是realm中自定义的代码:
```
//1.把AuthenticationToken转换为UsernamePasswordToken
UsernamePasswordTokenupToken=(UsernamePasswordToken)token;
//2.从UsernamePasswordToken中来获取username
Stringusername=upToken.getUsername();
System.out.println("doGetAuthenticationInfo---username:"+username);
//3.调用数据库的方法,从数据库中查询username对应的用户记录
System.out.println("2222");
TManagerUsermanagerUser=sysUserManagerService.queryUserByLoginName(username);
System.out.println("3333");
System.out.println("doGetAuthenticationInfo---managerUser:"+JSONObject.toJSON(managerUser));
//4.若用户不存在,则可以抛出UnknownAccountException异常
System.out.println("1111");
if(managerUser==null){
thrownewUnknownAccountException("用户不存在!");
}else{
//5.根据用户信息的情况,决定是否需要抛出其他的AuthenticationException异常.
if("locked".equals(managerUser.getUserStatus())){
thrownewLockedAccountException("用户被锁定");
}
//6.根据用户的情况,来构建AuthenticationInfo对象并返回.通常使用的实现类为:SimpleAuthenticationInfo
//以下信息是从数据库中获取的.
//1).principal:认证的实体信息.可以是username,也可以是数据表对应的用户的实体类对象.
Objectprincipal=username;
//2).credentials:密码.
Objectcredentials=managerUser.getUserPassword();
System.out.println("credentials:"+credentials);
//3).realmName:当前realm对象的name.调用父类的getName()方法即可
StringrealmName=getName();
//4).盐值.将用户名作为盐
ByteSourcecredentialsSalt=ByteSource.Util.bytes(username);
SimpleAuthenticationInfoinfo=null;//newSimpleAuthenticationInfo(principal,credentials,realmName);
info=newSimpleAuthenticationInfo(principal,credentials,credentialsSalt,realmName);
System.out.println("info:"+JSONObject.toJSON(info));
returninfo;
}
```
执行后后台只打印2222,也就是sysUserManagerService.queryUserByLoginName方法前的代码,方法后的代码根本不执行,后台还不报错,因为刚接触shiro,所以还望大神指点

分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:03:57 | 显示全部楼层
queryUserByLoginName方法是不是有问题。
回复

使用道具 举报

千问 | 2021-1-27 07:03:57 | 显示全部楼层
引用1楼qq_34808893的回复:queryUserByLoginName方法是不是有问题。
很高兴您能帮我。今天又看了一下程序,解决了,发现是service没有正常引入的问题。我写了一篇总结,可以互相交流

再次感谢。文章地址http://blog.csdn.net/fightingboyws/article/details/79158630
回复

使用道具 举报

千问 | 2021-1-27 07:03:57 | 显示全部楼层
TManagerUsermanagerUser=sysUserManagerService.queryUserByLoginName(username);
这个方法肯定是出问题了。下次在遇到这样的情况断点调试,像这种问题。调试下就出来。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行