将guest虚拟机重定向到“/ login”页面后,在Laravel中设置消息

时间:2017-10-16 19:24:17

标签: php laravel authentication laravel-5.5

抱歉,但我对Laravel很新,所以我可能会说一些愚蠢的事情......

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

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

访客进入/ test页面时,auth系统会自动将他重定向到/ login页面,这是正常的。

但是,我想向访客显示“您必须登录才能查看此页面”的消息,因此我已将此代码添加到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');
}

可以吗?这是实现这个的好方法吗?因为它看起来很奇怪..

谢谢!

1 个答案:

答案 0 :(得分:2)

如果用户有预定的网址,测试就可以了,有一件事要记住,这会影响所有重定向的用户,而不仅仅是来自/test的用户

但最好在会话中使用消息刷新来获取此类消息,而不在视图中传递它:

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;)