将访客重定向到“/login”页面后,在 Laravel 中设置消息

Set message in Laravel after redirecting guest to "/login" page

抱歉,我是 Laravel 的新手,所以我可能会说一些愚蠢的话...


好的,我刚刚使用 php artisan make:auth 创建了一个身份验证系统,并使用 auth 中间件创建了一个简单的路由:

Route::get("/test", "TestController@test")->middleware('auth');

访客进入/test页面时,认证系统会自动将他重定向到/login页面,这是可以的。

但是,我想向客人显示类似 "You have to login in order to view this page" 的消息,所以我将此代码添加到 Auth/LoginController.php:

public function showLoginForm()
{
     $intendedURL = \Session::get('url.intended');

     if($intendedURL)
         return view('auth.login')->with("message", "You must log in to continue");

     return view('auth.login');
}

可以吗?这是实现它的好方法吗?因为我觉得它很奇怪..

谢谢!

如果用户有意URL,测试是可以的,请记住一件事,这将影响所有重定向的用户,而不仅仅是来自 /test[=14= 的用户]

但是对于这种消息最好在会话中使用消息刷新而不在视图中传递它:

public function showLoginForm()
{
     $intendedURL = \Session::get('url.intended');

     if($intendedURL) {
         Session::flash('message', 'You must log in to continue');
      }

     return view('auth.login');
}

并且在视图中您将使用 Session::has 方法:

@if(Session::has('message'))
    <p class="alert alert-info">{{ Session::get('message') }}</p>
@endif

并添加一些 CSS ;)