私は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');
}
これにより、ブレードコードで直接これを行うことができます
@if (!Auth::guest())
do this
@else
do that
@endif
使用する
Auth::check()
詳細はこちら https://laravel.com/docs/5.2/authentication#authenticating-users 現在のユーザーが認証されているかどうかの判断
コントローラーで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']);
単一ルートの認証ミドルウェアが必要な場合
// Single route
Route::get("/awesome/sauce", "AwesomeController@sauce", ['middleware' => 'auth']);
複数のルートで認証ミドルウェアが必要な場合は、次を使用します。
// Route group
Route::group(['middleware' => 'auth'], function() {
// lots of routes that require auth middleware
});