当用户会话处于活动状态时使用 Laravel 5.7 中的 Auth 重定向到页面的方法

Posted

技术标签:

【中文标题】当用户会话处于活动状态时使用 Laravel 5.7 中的 Auth 重定向到页面的方法【英文标题】:Way to redirect to a page when user's session is active using Auth in Laravel 5.7 【发布时间】:2019-03-11 13:44:20 【问题描述】:

我正在使用 Laravel 5.7 开发一个项目,并且尝试在有活动会话时重定向到路由。目前我已经尝试将此代码放在我的视图顶部,但它似乎不起作用。

@php
    if(!empty(Auth::user())) 
        header('Location: '.route('dashboard'));
    
@endphp

我的代码有错误吗?还是有另一种方法可以做我正在尝试的事情? 提前致谢!

【问题讨论】:

为什么不在控制器里做呢? @Ash-b 谢谢我把代码放在控制器中,现在它可以工作了。 【参考方案1】:

您不需要在视图文件中进行重定向,您可以在路由文件中使用 auth 中间件,如下所示

<?php

   //route which don't required login session

    Route::group(['middleware'=>'auth'],function()
       //list of routes which you need to access after login
    );
?>

您不需要登录会话的路由,您可以在上述范围之外编写

【讨论】:

【参考方案2】:

为什么要在视图中检查类似的东西,你应该在返回视图之前在控制器中检查它。

无论如何,这是您可以在刀片模板中使用的内容

@if(Auth::user())
  <script>window.location = "/dashboard";</script>
@else 
  <script>window.location = "/login";</script>
@endif

请记住,如果 auth::user 为空,则表示用户未注册,但您也可以使用 Auth::guest() 进行检查,表示用户尚未注册。

希望对您有所帮助。

【讨论】:

以上是关于当用户会话处于活动状态时使用 Laravel 5.7 中的 Auth 重定向到页面的方法的主要内容,如果未能解决你的问题,请参考以下文章

仅当用户在 Laravel 5.7 中处于活动状态时才登录用户

Laravel 5.4 检查用户是不是处于活动状态,如果没有则回复消息

Laravel 不活动时间设置

Laravel 身份验证在 laravel 5.3 中无法正常工作

检查 sessionid 已知的 PHP 会话是不是处于活动状态

春季安全删除用户 - 会话仍处于活动状态