我刚开始接触 Laravel 5,并且正在尝试理解它的 Auth
过程。我想防止用户在未登录的情况下访问我的某些页面。尝试使用 Route:filter
,但它不起作用。我做错了什么?
Route::filter('/pages/mainpage', function()
{
if(!Auth::check())
{
return Redirect::action('PagesController@index');
}
});
我刚开始接触 Laravel 5,并且正在尝试理解它的 Auth
过程。我想防止用户在未登录的情况下访问我的某些页面。尝试使用 Route:filter
,但它不起作用。我做错了什么?
Route::filter('/pages/mainpage', function()
{
if(!Auth::check())
{
return Redirect::action('PagesController@index');
}
});
您应该使用auth
中间件。只需在您的路由中像这样添加它:
Route::get('pages/mainpage', ['middleware' => 'auth', 'uses' => 'FooController@index']);
或者在您的控制器构造函数中:
public function __construct(){
$this->middleware('auth');
}
您可以通过以下方式直接在Blade代码中执行此操作
@if (!Auth::guest())
do this
@else
do that
@endif
@auth
和 @endauth
https://laravel.com/docs/7.x/blade#if-statements 但无论如何加1 - Ryan您可以在控制器中使用 中间件
public function __construct()
{
$this->middleware('auth');
}
public function create()
{
if (Auth::user()) { // Check is user logged in
$example= "example";
return View('novosti.create')->with('example', $example);
} else {
return "You can't access here!";
}
}
Route::get('example/index', ['middleware' => 'auth', 'uses' => 'example@index']);
在 Laravel 中,您可以在 Blade 模板中检查用户是否已登录或未登录。 在页面 Blade 中使用以下代码:
@auth
// The user is login...
@endauth
@guest
// The user is not login...
@endguest
// Single route
Route::get("/awesome/sauce", "AwesomeController@sauce", ['middleware' => 'auth']);
// Route group
Route::group(['middleware' => 'auth'], function() {
// lots of routes that require auth middleware
});
你也可以执行以下操作
@guest
//在此处输入您希望让访客看到的内容
@else
//在此处输入仅供特权用户使用的内容
@endguest
@guest
//Guest area
@else
//Privileged area
@endguest
app/Http/Middleware/Authenticate.php
中的重定向。 - lukasgeiter