当前位置: 首页 > 知识库问答 >
问题:

未定义变量:Laravel登录Postman测试中的令牌

蒋烨然
2023-03-14

我在Laravel 5.8中为用户登录和注册编写了一个API。

我在Laravel 5.8中使用JWTAuth。当我在Postman上测试登录时,它生成了一个错误,未定义的变量:token。我试着为register编写API,当我测试它时,它工作得很好。根据我在网上看到的内容,我尝试向内核添加\ Illumbite \ View \ Middleware \ ShareErrorsFromSession::class,但仍然是相同的错误。

登录控制器

    public function login(Request $request)
    {
        $credentials = $request->json()->all();

        try
        {
            if(! $token == JWTAuth::attempt($credentials))
            {
                return response()->json(['error' => 'invalid_credentials'], 400);
            }
        }
        catch(JWTException $e)
        {
            return response()->json(['error' => 'could_not_create_token'], 500);
        }
        return response()->json(compact('token'));

    }   

    public function register(Request $request)
    {
        $validator = Validator::make($request->json()->all() , [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6',
            'username' => 'required|string|max:255',
        ]);

        if($validator->fails()){
            return response()->json($validator->errors()->toJson(), 400);
        }
        $user = User::create([
            'name' => $request->json()->get('name'),
            'email' => $request->json()->get('email'),
            'password' => Hash::make($request->json()->get('password')),
            'username' => $request->json()->get('username'),
        ]);

        $token = JWTAuth::fromUser($user);

        return response()->json(compact('user', 'token'), 201);
    }

应用程序编程接口。php

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::post('register', 'UserController@register');
Route::post('login', 'UserController@login');
Route::get('profile', 'UserController@getAuthenticatedUser');

我期望成功,但它给了错误:

错误异常:未定义的变量:文件C中的令牌:\xampp\htdocs\laravelapi\app\Http\Controller\UserController.php第52行

这是我的第52行:

如果(!$令牌==JWTAuth::attempt($凭据))

共有2个答案

罗奇文
2023-03-14

应使用赋值运算符且不等于==:

$token = JWTAuth::attempt($credentials))

此外,在登录函数中,您应该从用户那里生成一个令牌以返回

 public function login(Request $request)
        {
            $credentials = $request->json()->all();

            try
            {
                if(! $token = JWTAuth::attempt($credentials))
                {
                    return response()->json(['error' => 'invalid_credentials'], 400);
                } else {
                    // Generate token from user 
                    $token = JWTAuth::attempt($credentials);
                    return response()->json(compact('token'));
                }
            }
            catch(JWTException $e)
            {
                return response()->json(['error' => 'could_not_create_token'], 500);
            }
        } 
洪飞驰
2023-03-14

在第52行之前定义$标记

$token = null;
 类似资料:
  • 我正在使用FreeMarker构建一个基于模板的代码生成器。由于用户可以用任何语言生成代码,因此在数据模型中提供特定于语言的设置(例如包)是不合适的。但是,如果在FreeMarker模板中定义了它们,则必须定义它们(除非它们是可选的)。 此代码利用FreeMarker抛出的异常查找丢失的值。然后,它用一个临时值填充它们,以便找到其他丢失的值。 源代码: Template:

  • 问题内容: 在jQuery的核心风格指南建议两种不同的方法来检查一个变量是否被定义。 全局变量: 局部变量: 特性: 为什么jQuery为什么对全局变量使用一种方法而对局部变量和属性使用另一种方法? 问题答案: 对于未声明的变量,将返回字符串文字,而身份检查将触发错误 “未定义foo” 。 对于局部变量(您 知道 已在某处声明),不会发生此类错误,因此进行身份检查。

  • 问题内容: 作为Go“ newb”,我 不确定 在编译程序时为什么会在控制台中收到 未定义err 和 未定义用户 的错误。 我有: 我意识到我可以在条件块之前声明and 变量,但是我想知道为什么这不起作用。与一次性创建两个新变量有关吗? UDPATE 对此有些混乱。 我现在有: 和我的错误现在是 用户声明的,不使用 。目前,我还没有解决 错误的 部分,但是我不确定为什么会遇到用户错误。 问题答案:

  • 问题内容: 当我尝试引用永不设置或未设置的会话()时,我在核心CakePHP文件中出现错误: 我已经搜索了我的代码(在app /目录中),但是找不到对或的引用。我有什么想念的吗? 当我尝试运行任何单元测试时,都会显示此错误。这是正常的吗?我已经清除了目录,并用另一个目录(相同版本)替换了该目录,以确保我没有无意间修改了核心文件中的任何内容,但是仍然出现相同的错误。我不确定这是否只是框架中的缺陷或其

  • 对Postman中的API使用相同的变量,例如{{env}}/API/V1/SearchValue错误消息显示如下。无法获得任何响应连接到QA/API/V1/Airport时出错。可能发生这种情况的原因:服务器无法发送响应:确保后端正常工作自签名SSL证书被阻止:通过关闭设置>常规代理配置错误中的“SSL证书验证”来修复此问题确保在设置>代理请求超时中正确配置代理:在设置>常规中更改请求超时

  • 我试图在MySQL中创建一个过程。这是正文: 但是当我保存它时,我得到这个错误: 处理您的请求时发生了一个或多个错误: 以下查询失败:“创建定义器”=root@localhost过程getAutoFinishTimeRemaining(按_order_id INT,按_Hoursint)非确定性读取SQL数据SQL安全定义器开始声明_date_delivered datetime;声明_date_