如何在数据库中创建 Laravel 5.4 会话
How to create a Laravel 5.4 Session in the Database
我已经搜索了文档并且花了几个小时试图弄清楚这一点,这确实是我最后的选择。如果这不起作用,我可能必须订阅 Laracasts。我正在按照本指南进行操作,但它似乎对我不起作用。 https://laravel.com/docs/5.4/session
我希望有人能帮助我并告诉我我做错了什么。当我执行我的 API 请求时,我得到一个成功的响应,它 returns 来自数据库的用户,但它不会在会话 table 中创建会话。另外,我在 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);
}
我不确定你写的是否是你真正想要实现的,但这就是我的想法 - 你正在使用 api
中间件组并且你想使用会话。但是,如果您查看 app/Http/Kernel.php
,您会发现会话默认仅由 web
中间件组使用:
\Illuminate\Session\Middleware\StartSession::class,
所以您可以将此中间件添加到 api
组或重新考虑您真正想要实现的目标,因为 API 通常是无状态的,所以您通常不会为它们使用会话,因为在每个请求中您都会发送授权数据(api_token
在这种情况下默认)所以每次你都可以找出哪个用户正在发出请求
我已经搜索了文档并且花了几个小时试图弄清楚这一点,这确实是我最后的选择。如果这不起作用,我可能必须订阅 Laracasts。我正在按照本指南进行操作,但它似乎对我不起作用。 https://laravel.com/docs/5.4/session
我希望有人能帮助我并告诉我我做错了什么。当我执行我的 API 请求时,我得到一个成功的响应,它 returns 来自数据库的用户,但它不会在会话 table 中创建会话。另外,我在 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);
}
我不确定你写的是否是你真正想要实现的,但这就是我的想法 - 你正在使用 api
中间件组并且你想使用会话。但是,如果您查看 app/Http/Kernel.php
,您会发现会话默认仅由 web
中间件组使用:
\Illuminate\Session\Middleware\StartSession::class,
所以您可以将此中间件添加到 api
组或重新考虑您真正想要实现的目标,因为 API 通常是无状态的,所以您通常不会为它们使用会话,因为在每个请求中您都会发送授权数据(api_token
在这种情况下默认)所以每次你都可以找出哪个用户正在发出请求