jwttoken 报错User not found,指定token的验签的表,制定token验证的表,根据不同的表生成token

token使用场景

项目分为两端pc和h5,对应的用户表分别为users和members其中users为后台管理员用户表,memers为项目用户表,在用户通过h5登陆的时候使用member模型并且用户只采用手机号快捷登陆,也就是说member表中的用户没有密码,后台管理员登陆的时候使用的是user模型,我们采取路由中间件的方式进行token的验签

为了实现该效果分为以下几步

一、token的生成

查看https://www.cnblogs.com/mzli/p/10637214.html可了解使用jwttoken的配置,pc端生成token我们使用auth('users')->attempt($data),$data=[用户名,密码]

attempt方法的解释:Attempt to authenticate a user using the given credentials(尝试使用给定凭据对用户进行身份验证)

同样的pc端使用auth('users')->user($token)来解析token中包含的用户信息

h5 登录时我们仅通过用户id来生成token使用方法为tokenById($id)同样的可以通过auth('')->user($token)来获取信息但是这里应该使用member门面如auth('member')->user($token)

二、token的验签通过路由中间件

jwttoken本身已经提供了验证token的中间件--jwt.auth,但是因为我们是两张表,所以在我们使用的时候应该指定使用member还是user表来查询对应token的数据

jwttoken验证token的中间件如下

jwttoken 报错User not found,指定token的验签的表,制定token验证的表,根据不同的表生成token_第1张图片

 

 

 而在这个中间件中又调用了class BaseMiddleware中的anthenticate方法,anthenticate方法如下

jwttoken 报错User not found,指定token的验签的表,制定token验证的表,根据不同的表生成token_第2张图片

 

 

 $this->auth就在本类中有一个构造函数,如下

jwttoken 报错User not found,指定token的验签的表,制定token验证的表,根据不同的表生成token_第3张图片

 

 

 所以也就是说,我们在使用这jwttoken提供的验证token的中间件jwt.auth中间件的时候我们就应该直接将对应的auth类声明

所以在路由中应该如下使用

 

 这样,我们就可以使用对应的模型进行数据的验证和获取了

三、如果使用jwttoken中报错User not found也有可能是因为没有指定要使用的模型是哪一个,jwttoken无法获取到对应的用户数据,报错没有这个用户

 

你可能感兴趣的:(jwttoken 报错User not found,指定token的验签的表,制定token验证的表,根据不同的表生成token)