我是 Laravel 的新手。我正在尝试检查用户是否已登录或访客。我创建一个名为(checkUserLogin)的中间件,我的代码是:
namespace App\Http\Middleware;
use Auth;
use Closure;
use App\Http\Controllers\Controller;
use session;
class checkUserLogin
{
public function handle($request, Closure $next)
{
if (session()->get('email') != ''){
// redirected to dashboard.
}else{
// redirect to login page.
}
return $next($request);
}
}`
在我的 Controller 和 Blade 模板中session()->get('email')
工作正常,如果我尝试打印 session()->get('email')
,我会收到登录但在中间件中的用户的电子邮件然后出现空白屏幕。
最佳答案
使用提供给您的工具
阅读文档并了解 Retrieving The Authenticated User 。您将看到可以使用 $request->user()
查看包含的中间件的代码 RedirectIfAuthenticated 。您将看到可以使用 Auth::guard($guard)->check() 检查用户是否登录
中间件代码示例
namespace App\Http\Middleware;
use Auth;
use Closure;
class checkUserLogin
{
public function handle($request, Closure $next)
{
if ( $request->user() ){
// user is logged in
} else {
// user is not logged in
}
return $next($request);
}
}
一些想法
如果您的目标是让任何访问者都能看到路线,但要向已登录的访问者显示与您向访客显示的内容不同的部分,则可以在 Controller 中轻松完成此操作。例如,当用户未登录时,通常显示“登录”链接。当用户登录时,通常显示用户帐户菜单。
关于laravel - 如何在中间件中使用 session 来始终检查用户是否登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39585702/