• 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的中间件如下

     

     

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

     

     

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

     

     

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

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

     

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

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

     

  • 相关阅读:
    Git回退---reset和revert
    XML解析
    SpringBoot学习day01
    Spring boot精要
    JS没有contains方法,可以用indexof实现
    git fetch 取回所有分支(branch)的更新(转)
    idea 设置注释模板
    git退出编辑模式
    git 提交代码到远程分支
    linux下,保存退出vim编辑器(转)
  • 原文地址:https://www.cnblogs.com/mzli/p/12372231.html
Copyright © 2020-2023  润新知