JWT 接口注册的用户为什么自动登录了?
教程:5.1. 获取个人信息《L03 Laravel 教程 - 实战构架 API 服务器 ( Laravel 5....
app/Http/Controllers/Api/UsersController.php
<?php
namespace App\Http\Controllers\Api;
use App\Http\Requests\Api\UserRequest;
use App\Models\Image;
use App\Models\User;
use App\Transformers\UserTransformer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
class UsersController extends Controller
{
.
.
.
// 注册用户
public function store(UserRequest $request)
{
$verifyData = Cache::get($request->verification_key);
if (!$verifyData) {
return $this->response->error('验证码已失效', 422);
}
// 防止时序攻击的字符串比较
if (!hash_equals($verifyData['code'], $request->verification_code)) {
// 返回 401
return $this->response->errorUnauthorized('验证码错误');
}
$user = User::create([
'name'=> $request->name,
'phone' => $verifyData['phone'],
'password' => bcrypt($request->passowrd),
]);
// 清除验证码缓存
Cache::forget($request->verification_key);
// return $this->response->created();
return $this->response->item($user, new UserTransformer())
->setMeta([
'access_token' => Auth::guard('api')->fromUser($user),
'token_type' => 'Bearer',
'expires_in' => Auth::guard('api')->factory()->getTTL() * 60,
])
->setStatusCode(201);
}
.
.
.
}
疑问点:
这里只是创建了一个用户,
那么为什么下面却可以获取到这个刚注册的用户的信息的呢?难道它自动登录了?
@liyu001989 老师能否解答下疑问。
你的理解不太对,$user 是你自己创建的一个用户,
Auth::guard('api')->fromUser($user)
只是为这个模型创建一个 Token 而已。@liyu001989 明白了,谢谢老师。