【问题标题】:Pattern filters in Laravel 4Laravel 4 中的模式过滤器
【发布时间】:2013-10-28 09:00:51
【问题描述】:

我想制作一个模式路由,在用户未登录时将其重定向到登录页面。 我搜索但找不到解决方案。一如既往,Laravel 的文档毫无用处!

我的filter.php有这个

Route::filter('auth', function()
{
if (Auth::guest()) return Redirect::guest('login');
});

Route::filter('auth.basic', function()
{
return Auth::basic();
});

而这条路线在我的routes.php

Route::when('/*', 'auth' );

但它不起作用。我该怎么做?

【问题讨论】:

  • 什么不工作,你能详细说明吗?
  • 我希望每当用户访问 http://mywebsite.com/public/ 时,如果他/她之前没有登录,自动重定向到 /login 页面登录。和 * 是因为我希望我的所有页面都使用此规则。但是使用上面的代码,它并没有按预期进行。
  • 你有login 路由吗,它是什么样子的?你是如何声明登录路径的?现在发生了什么?
  • 这是我的 routes.php 文件:Route::when('/*', 'auth' ); Route::get('/', 'HomeController@getIndex' ); Route::get('/login', 'UserController@getLogin'); 这是我的 filters.php 文件:Route::filter('auth', function(){ if (Auth::guest()) return Redirect::guest('/login'); });

标签: php laravel laravel-4 laravel-routing


【解决方案1】:

像这样更改登录的路由声明

Route::get( '/login', array('as' => 'login', 'uses' => 'UserController@getLogin') );

在你的filters.php 使用

Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::route('login');
});

所以,你可以使用

Route::when('*', 'auth' );

你也可以使用

Route::group(array('before' => 'auth'), function ()
{
    // Define all routes here with auth
    Route::get('my_first_route', function(){ /... });
    Route::post('my_second_route', 'MyController@myAction');
});

【讨论】:

  • authauth.basic 是 Laravel 的预定义过滤器。我没有定义它们。
  • 不工作。我以前在 laravel 3 中做过这个。但我不能在 laravel 4 中:(
  • 谢谢你,Route::group 为我工作。也仍然通配符路由不起作用!。为您的回复和时间 +1 :)
猜你喜欢
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 2013-08-10
  • 2015-08-30
  • 2013-06-01
相关资源
最近更新 更多