将访客重定向到“/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 ;)
抱歉,我是 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 ;)