Laravel Auth不工作,一切似乎都是正确的

时间:2014-05-29 09:57:07

标签: php laravel laravel-4

这是我的控制器代码......

    if(Auth::attempt($userdata)){

  //echo 'dfdf';
  //exit;
        return Redirect::to('mydata');
    }

如果我取消注释,它会显示dfdf ...所以这意味着Auth很好..对吧?这里是我的routes.php代码......

 Route::get('mydata', function()
 {
   return View::make('mydata');})->before('auth');

即使这样也有效......如果我从routes.php中删除->before('auth');     公共函数doLogin()     {

    return Redirect::to('mydata');
    exit;
     }

that means even router is fine right?

如果我删除before('auth');

路由工作而无需登录,这看起来甚至路线都没问题,那么return Redirect::to('mydata');的问题是什么它没有重定向?它甚至在登录页面上卡住了认证...

2 个答案:

答案 0 :(得分:1)

评论后编辑:

在控制器中,将重定向更改为::intended

if(Auth::attempt($userdata)){
    return Redirect::intended('mydata');
}

来自docs

  

Redirect::intended功能会将用户重定向到他们的网址   在被身份验证捕获之前试图访问   过滤。如果是,则可以为此方法提供回退URI   预定目的地不可用。

API:

intended(string $default = '/', int $status = 302, array $headers = array(), bool $secure = null)

您无需将->before('auth')添加到View来电,因为如果{{1}您只是重定向到mydata }}返回Auth::attempt

所以改变你的路线:评论后编辑 Thx向Juan Antonio Orozco指出这个缺点!!

true

而且,BTW,在Route::get('mydata', array('before' => 'auth', function() { return View::make('mydata'); }); 之后添加return是不必要的,因为解释器已经使用exit命令离开了函数,所以它甚至都不会被执行

答案 1 :(得分:1)

您可以在此类路线中使用身份验证过滤器。


Route::get('mydata', array('before' => 'auth', function()
{

  return View::make('mydata');

}));