【问题标题】:How to create a Laravel 5.4 Session in the Database如何在数据库中创建 Laravel 5.4 会话
【发布时间】:2017-04-23 20:08:30
【问题描述】:

我已经搜索了文档,并花了几个小时试图弄清楚这一点,这确实是我最后的手段。如果这不起作用,我可能必须订阅 Laracasts。我正在遵循本指南,但它似乎对我不起作用。 https://laravel.com/docs/5.4/session

我希望有人可以帮助我并告诉我我做错了什么。当我执行 API 请求时,我得到一个成功响应,它会从数据库中返回用户,但它不会在会话表中创建会话。另外,我在 laravel.log 中没有任何错误。

我可以毫无问题地创建用户。检索用户时,我可以匹配散列密码。

api.php

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

Route::post('/users', 'UserApiController@login');

UserApiController.php

public function login()
{
    $input = Request::all();
    $user = new User();
    $response = ['success' => false];
    if (!$user->validate($input))
    {
        return response()->json($response, 412);
    }
    $user = User::where('Email', $input['Email'])->where('Password', User::makePassword($input['Password']))->first();

    Log::info($user); //returns the user object successfully

    if (!isset($user))
    {
        return response()->json($response, 401);
    }
    session('user', $input]);  //<--this is not working
    $response['success'] = true;
    return response()->json($response, 200);
}

【问题讨论】:

    标签: php laravel rest laravel-5 laravel-5.4


    【解决方案1】:

    我不确定你是否写了你真正想要实现的东西,但这是我的想法——你正在使用api 中间件组并且你想使用会话。但是,如果您查看app/Http/Kernel.php,您会看到默认情况下会话仅由web 中间件组使用:

    \Illuminate\Session\Middleware\StartSession::class,
    

    因此您可以将此中间件添加到 api 组,或者重新考虑您真正想要实现的目标,因为 API 通常是无状态的,因此您通常不会为它们使用会话,因为在每个请求中您都会发送授权数据 (api_token在这种情况下默认情况下)所以每次你都可以找出哪个用户正在发出请求

    【讨论】:

    • 谢谢!我最终重新安装并设置了社交名流,这次我使用默认设置进行身份验证。
    猜你喜欢
    • 2017-03-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 2017-11-19
    相关资源
    最近更新 更多