我有一个带有 Sanctum 身份验证的 Laravel 7 API,VueJS (Nuxt SPA) 前端。注册(Laravel 身份验证脚手架)后,用户必须验证他们的电子邮件地址。通常 app+auth 工作正常,但我注意到以下是可能的:
我试图准确了解身份验证发生的位置。注册完成后但在验证电子邮件之前,在 /login/ 上有一个对标准用户端点 /api/user 的请求,并带有 403 响应。我认为这是正常的 Nuxt 身份验证模块行为。 我可以看到电子邮件验证 api 端点具有带有 Set-Cookie XSRF-token 和 session 的响应标头。应该有吗?
我的 VerificationController/verify 方法看起来像这样
class VerificationController extends Controller
{
use VerifiesEmails;
/**
* Mark the authenticated user's email address as verified.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function verify(Request $request)
{
if ($request->route('id') == $request->user()->getKey() &&
$request->user()->markEmailAsVerified()) {
event(new Verified($request->user()));
}
return response()->json('Email verified.');
}
我的 Nuxt/Vue 验证电子邮件页面组件如下所示
export default {
auth: 'guest',
created() {
this.$axios.get(this.$route.query.query)
.then(response => {
this.$router.push('/');
})
.catch(error => {
console.log(error);
this.$router.push('/');
})
}
}
Laravel web.php/auth 路由
Route::group(['prefix' => 'auth'], function(){
Auth::routes();
Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');
});
我要么不希望用户登录(最好),要么在验证电子邮件后直接成功登录以明确用户已登录