如果用户未登录 Laravel,则重定向到登录页面

Posted

技术标签:

【中文标题】如果用户未登录 Laravel,则重定向到登录页面【英文标题】:Redirect to Login page if ther user not logged in Laravel 【发布时间】:2015-09-04 06:19:45 【问题描述】:

我使用的是 Laravel 版本 5。我的项目有一个路由文件,其中包含很多行。如果用户未登录,我需要将身份验证(如重定向到登录页面)。如果用户未登录,我还想阻止直接 URL 访问。我该怎么办?

我使用了下面的代码

Route::group(array('before' => 'auth'), function()
    Route::get('/', 'HomeController@index');
);

但这仅阻止主页。我需要保护我所有的路线。并且还建议我如何减少路由文件行。

【问题讨论】:

【参考方案1】:

您可以在一个组中放置任意数量的路由

Route::group(array('before' => 'auth'), function()
    Route::get('/', 'HomeController@index');
    Route::post('store', 'HomeController@store');
    Route::get('show', 'AnotherController@index');
    // ...
);

如果您确实需要保护所有您的路线,您可以添加

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

到你的主控制器类,Http/Controllers/Controller

编辑您的评论,取自docs,您可以使用

return redirect()->intended('view');

/**
 * Handle an authentication attempt.
 *
 * @return Response
 */
    public function authenticate()
    
        if (Auth::attempt(['email' => $email, 'password' => $password]))
        
            return redirect()->intended('dashboard');
        
    


【讨论】:

那么还有一个你没有描述的错误。检查存储/日志中的 laravel.log 是否有错误 我检查了日志文件。我的问题似乎没有错误。 但是您的第二个 __construct 函数运行良好。我想知道哪种方法最好? 我想知道一件事。登录后有没有办法重定向上次访问的url? 我如何在模块中使用身份验证

以上是关于如果用户未登录 Laravel,则重定向到登录页面的主要内容,如果未能解决你的问题,请参考以下文章

如果未登录,则重定向 html 页面

如果用户已登录,则重定向

Spring Security:如果身份验证失败,则重定向到登录页面

Vue SPA - 检查用户是不是通过身份验证,如果没有则重定向到登录

Django:如果在 urls.py 中登录,则重定向到不同的页面

Spring Security - 如果已经登录则重定向