我正在尝试创建仅电子邮件身份验证。我不想登录,我想要一个情况下,我将只有注册,一旦电子邮件输入,一个承载令牌创建。
我有注册功能和登录功能,当我启动了密码,但我已经删除了密码,但我试图移动“创建令牌”注册。令牌未定义会产生错误。
注册函数
public function signup(Request $request)
{
$request->validate([
'email' => 'required|string|email|unique:users'
]);
$user = new User([
'email' => $request->email
]);
$user->save();
return response()->json([
'message' => 'Successfully created user!'
], 201);
}
登录功能
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email'
]);
$credentials = request(['email', '=']);
if(!Auth::attempt($credentials))
return response()->json([
'message' => 'Unauthorized'
], 401);
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString()
]);
}
最佳答案
很简单,你已经完成了这里需要完成的大部分工作。您不需要登录函数,而是需要复制函数的令牌部分,如下所示
public function signup(Request $request)
{
$request->validate([
'email' => 'required|string|email|unique:users'
]);
$user = new User([
'email' => $request->email
]);
$user->save();
Auth::login($user);
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
return response()->json([
'message' => 'Successfully created user!',
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString()
], 201);
}
关于mysql - 是否可以从Laravel中的现有电子邮件密码结构创建仅电子邮件身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54905052/