我是Laravel 5的新手,并尝试了解其Auth
进程。我想阻止用户访问我的某些页面,除非用户没有登录。尝试使用Route:filter
但它不起作用。我做错了什么?
Route::filter('/pages/mainpage', function()
{
if(!Auth::check())
{
return Redirect::action('PagesController@index');
}
});
答案 0 :(得分:13)
您应该使用auth
middleware。在您的路线中,只需添加如下:
Route::get('pages/mainpage', ['middleware' => 'auth', 'uses' => 'FooController@index']);
或者在你的控制器构造函数中:
public function __construct(){
$this->middleware('auth');
}
答案 1 :(得分:4)
您可以通过这种方式直接在您的刀片代码中执行此操作
@if (!Auth::guest())
do this
@else
do that
@endif
答案 2 :(得分:2)
如果你想要单一路由的认证中间件那么
// Single route
Route::get("/awesome/sauce", "AwesomeController@sauce", ['middleware' => 'auth']);
如果您想在多路线路上使用auth middlesware,请使用:
// Route group
Route::group(['middleware' => 'auth'], function() {
// lots of routes that require auth middleware
});
答案 3 :(得分:2)
您可以在控制器中使用middleware
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']);
答案 4 :(得分:2)
答案 5 :(得分:0)
在laravel中,您可以检查用户是否已登录刀片或未登录。 在刀片中使用此代码:
public registerListener<T extends keyof ListenerTypes>(name: T, listener: Listener<T>): void {
(this.listeners[name] as Listener<T>[]).push(listener);
}
答案 6 :(得分:0)
您也可以执行以下操作
@guest
//你想让客人看到的都在这里
@else
//为特权用户保留的东西都在这里
@endguest
@guest
//Guest area
@else
//Privileged area
@endguest
答案 7 :(得分:-2)
@if(Auth::user())
// content
@endif