laravel - 带有 API 令牌的 Laravel 自定义表
问题描述
我正在使用自定义表customer
进行登录,还使用 Laravel Passport 为我的 Ionic 移动应用程序生成令牌。我被困在登录代码中,我需要在从自定义表查询后生成令牌。
下面是登录代码...我可以成功地从数据库中检索 id 但如何将其与令牌链接?
public function login(Request $request)
{
$phone = $request->input('phone');
$password = $request->input('password');
$user = $token = array();
try {
$rs_login = DB::select("select a.id from customer a where a.active > 0 and a.phone = ? and a.password = ?", [$phone, $password]);
$numrow_login = count($rs_login);
if ($numrow_login != 1) {
$this->error['form-message'] = 'ERR' . __LINE__ . ': Invalid phone number or password';
} else {
$user['id'] = $rs_login[0]->id;
}
} catch (\Illuminate\Database\QueryException $ex) {
$this->error['form-message'] = 'Login service is unavailable';
}
if ($this->error == '') {
$tokenResult = $user['id']->createToken('Personal Access Token'); // How to pass the $user['id'] to generate token?
$token = $tokenResult->token;
$token->save();
$token['access_token'] = $tokenResult->accessToken;
$token['token_type'] = 'Bearer';
$token['expires_at'] = Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString();
}
if ($this->error == '') {
$response['status'] = 'success';
$response['message'] = 'Login successful';
$response['token'] = $token;
} else {
$response['status'] = 'error';
$response['error'] = $this->error;
$response['message'] = (isset($this->error['form-message'])) ? $this->error['form-message'] : 'Please check the form';
}
return response()->json($response);
}
解决方案
您可以只指定一个自定义表,config/auth.php
而不是重写整个逻辑
'api' => [
'driver' => 'token',
'provider' => 'customer', // <--- Here
'hash' => false,
],
并创建提供程序以使用数据库中的特定表
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'customer' => [
'driver' => 'database',
'table' => 'customer',
],
],
并保留护照的默认登录行为
希望这可以帮助
推荐阅读
- spring-security - 使用内存身份验证的 SpringSecurity 不会在 http put 方法中返回错误 403
- unity3d - Unity 中的 Agora 视频分辨率
- python - 从头开始使用 Python 数据构建表
- windows - 服务器待重启
- c++ - Opencv 的 cv::Mat::forEach<> 函数的 position 参数对应什么索引顺序?
- ruby-on-rails - 在 Rails 6 中软删除活动文本
- javascript - Bootstrap 4 崩溃不适用于 ReactJS 中的地图
- python - 使用python从Linux上的特定内存地址读取值
- flutter - 解析 Json 数组和对象 Flutter
- java - 在 Spring JPA 中使用 SortedSet