求解决若依框架整合短信验证登录出现的问题。

查看 79|回复 8
作者:SnowHall   
我是照着这个博客来的,https://blog.csdn.net/ii950606/article/details/128485787,但是遇到一个问题,这句authenticationManager.authenticate(new SmsCodeAuthenticationToken(phone));代码报了一个空指针异常,debug了很久也没找到问题,求各位大佬帮忙解答一下。

大佬, 框架

gao3705512   

在代码附近定义一个变量  SmsCodeAuthenticationToken   st=new  SmsCodeAuthenticationToken("13000000000");实例,看看这个st有么有值。然后调试。如果还找不到问题。就附近方法里面那个变量的值没有传过去或者为空的。
gao3705512   

还要看一下
4.2 身份认证方法加入手机登录鉴权
那个帖子里面的4。2的auth变量有么有值。一步一步调试发现问题哈。
SnowHall
OP
  


gao3705512 发表于 2023-2-15 15:52
在代码附近定义一个变量  SmsCodeAuthenticationToken   st=new  SmsCodeAuthenticationToken("13000000000 ...

st是有值的,就是authenticationManager.authenticate(st)这个方法出现问题
SnowHall
OP
  


gao3705512 发表于 2023-2-15 15:53
还要看一下
4.2 身份认证方法加入手机登录鉴权

加了,刚刚调试了,代码都没走到这一步就报空指针了。
gao3705512   

那就 看着这个该方法 authenticat,调试他
gao3705512   

仔细调试这里   /**
     * 重写 authenticate方法,实现身份验证逻辑。
     */
    @Override
    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
        SmsCodeAuthenticationToken authenticationToken = (SmsCodeAuthenticationToken) authentication;
        String telephone = (String) authenticationToken.getPrincipal();
        // 委托 UserDetailsService 查找系统用户
        UserDetails userDetails = userDetailsService.loadUserByUsername(telephone);
        // 鉴权成功,返回一个拥有鉴权的 AbstractAuthenticationToken
        SmsCodeAuthenticationToken authenticationResult = new SmsCodeAuthenticationToken(userDetails, userDetails.getAuthorities());
        authenticationResult.setDetails(authenticationToken.getDetails());
        return authenticationResult;
    }
gao3705512   

逐层一个一个方法找问题调试回去
SnowHall
OP
  


gao3705512 发表于 2023-2-15 17:31
逐层一个一个方法找问题调试回去

谢谢你了,我刚刚去找了博客作者,他帮我解决了,是我查询的时候没查询角色!
您需要登录后才可以回帖 登录 | 立即注册

返回顶部