如何在数据库中创建Laravel 5.4会话

时间:2017-04-23 20:08:31

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

我已经仔细检查了文档,并且我花了好几个小时试图解决这个问题,这是我的最后一招。如果这不起作用,我可能需要订阅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);
}

1 个答案:

答案 0 :(得分:3)

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

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

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