我如何保护我的laravel身份验证

时间:2017-10-16 09:20:13

标签: php laravel

我需要保护他们免受查看。这意味着如果没有登录它不应该重定向到任何其他页面,如果有人试图访问,它应该返回到登录页面。

我正在使用Laravel 5.4和常规身份验证

php artisan make:auth

在登录控制器中

protected $redirectTo = '/home';

在Middleware RedirectifAuthenticated中我尝试这样但是它没有用。

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/home');
        return redirect('/leadsadd');
        return redirect('/leadslist');
        return redirect('/opporadd');
        return redirect('/opporlist');
        return redirect('/accadd');
        return redirect('/acclist');
        return redirect('/selftask');
 }

    return $next($request);

}

它无法正常工作。我认为我正在做的方法是错误的。任何人都可以帮助我如何防止它,不应该重定向到任何路由或URL。 路线

Route::get('/', function () {
return view('auth.login');
});

Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

Route::get('leadsadd','crmcontroller@addleads');
Route::get('leadslist', 'crmcontroller@leadslist');
Route::any('leadview/{id}','crmcontroller@show');
Route::get('leadedit/{id}','crmcontroller@edit');

提前致谢。

3 个答案:

答案 0 :(得分:3)

您应该group your routes并向其添加int中间件。如果任何未经过身份验证的用户尝试访问这些页面,则此中间件将自动重定向到登录页面。

auth

答案 1 :(得分:1)

你需要在你的路线中这样做

Route::group(['middleware' => 'auth'], function () {
        // all authenticated users will have the access here! 
        ]]);

并且您的RedirectIfAuthenticated.php应该恢复原状

public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/yourdashboardorwhatever');
        }

        return $next($request);
    }

答案 2 :(得分:0)

在Laravel 5.4中有以下两种保护路线的方法

一种方法是使用web.php文件中的路由附加auth中间件

Route::get('profile', function () {
    // Only authenticated users may enter...
})->middleware('auth');

另一种方法是在控制器的构造函数中附加中间件来处理您的路由。

public function __construct()
{
    $this->middleware('auth');
}