繁体   English   中英

URL GET Route Laravel 中的参数

[英]URL Parameter in GET Route Laravel

我在api.php有一条路线,看起来像这样

Route::get('auth/logout/{token}', 'UserController@logout');

然后,我使用 Postman 来检查这个 API 端点,如下所示:

localhost:8000/api/v1/auth/logout?token=$2y$10$InjSk8VExH76wSyA3OE9a.jhR/3GhAkJdBE3EyQ3O.Z0kCe/r7wp y

但我只是在 postman 中得到一个空白响应。 它应该显示消息响应并删除数据库中的数据。 但事实并非如此。 这是我在UserController.php中的logout()

public function logout($token){
    $current_token = Token::where('token', $token)->first();
    if($current_token){
        if(Token::where('token','=',$current_token)->delete()){
            return response()->json([
                'message' => 'Logout Success'
            ], 201);
        }
    }else{
        return response()->json([
            'message' => 'Unauthorized User'
        ], 401);
    }
}

任何人都可以帮助我的问题? 我很欣赏你所有的方法。

编辑...

当我像这样发送虚拟请求并使用dd($token)时, Postman 给了我"asdfasdf"

localhost:8000/api/v1/auth/logout/asdfasdf

那么,如何使用"?"在 URL 中发送token参数?

编辑 2...

我从数据库中的 bcrypted user_id生成令牌。 就我而言,我不使用任何令牌生成器插件或其他东西。

您已经通过/在路由中传递了令牌,这就是您返回空白响应的原因。

正如您在问题中最后所说的那样传递令牌? . 所以你需要在header中传递令牌。 在 postman header 部分中,您必须传递键和值。 你的钥匙是token 价值是您的代币,例如2y$10$InjSk8VExH76wSyA3OE9a.jhR/3GhAkJdBE3EyQ3O.Z0kCe/r7wpy

阅读此文档: https://learning.getpostman.com/docs/postman/sending-api-requests/requests/

对于 laravel api_token:

看看 laravel 官方文档: https://laravel.com/docs/5.8/api-authentication

是的,我终于知道为什么Postman中的响应是空白的原因了。 UserController.php是资源 controller,但我在其中添加了自定义login()方法。 我应该将自定义方法的Route放在resource controller 的route上方。 它应该如下所示:

Route::get('auth/login','UserController@login');

Route::resource('auth', 'UserController');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM