zoukankan      html  css  js  c++  java
  • 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无法获取到对应的用户数据,报错没有这个用户

     

  • 相关阅读:
    python中的os
    文件系统的简单操作
    文件与目录管理
    用户与用户组管理
    基础命令的操作
    linux开机流程
    ansible源码安装、普通用户实现批量控制
    python3中得数据类型
    判断一个字符串中得大写字母,小写字母,数字出现得次数
    Elasticsearch 如何安全加固
  • 原文地址:https://www.cnblogs.com/mzli/p/12372231.html
Copyright © 2011-2022 走看看