如何在 laravel 和 vuejs 中实现 Auth::check()



如何检查用户登录? 如果用户未登录,则用户无法提交评论,并重定向到登录页面进行登录。

我试过了,但没有奏效

使用身份验证中间件保护您的路由:

Route::get('comments', function () {
// Only authenticated users may enter...
})->middleware('auth');

或作为一个组:

Route::group(['middleware' => ['auth']], function () {
Route::post('comments', 'CommentController@store');
});

然后 laravel 会自动将未经身份验证的用户重定向到您的"登录名"命名路由。(或在 app/Http/Middleware/Authenticate.php的 redirectTo(( 方法中指定自定义路由(

从 vue 中的 ajax 调用中,您可以侦听 403 响应代码,然后将用户重定向到登录 URL。但是,如果您将主应用程序的路由放在身份验证中间件中,您将永远不必担心这部分,因为 laravel 会自动重定向用户。

这实际上取决于您如何构建应用程序,如果它是一个水疗中心,您应该使用诸如 laravel 气闸或护照之类的东西,而不是默认的登录逻辑。

如果这是一个多页应用程序,则应包含一个简单的身份验证中间件。

有了这个,您可以简单地在刀片文件中告诉应包含或不包含哪些元素,如下所示:

@auth
<h1>Logged in</h1>
@endauth

你可以有一个简单的路线来检查你是否登录,这取决于结果你可以做一些魔法。

您的路线:

use Auth;
Route::get('is-auth', function () {
$auth = Auth::user();
return $auth;
});

现在,将用户保存到全局窗口对象。

在 generel 中,您可以做这样的事情,但我不推荐以下想法。

然后,您可以向服务器发送请求,我不建议这样做,并在您是否登录时获得结果。

axios.get('is-auth')
.then(response => {
if(response.data) {
console.log("not logged in");
}
console.log("logged in");
});
.catch(error => console.log("error");

最新更新