这是我的控制器代码......
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');
的问题是什么它没有重定向?它甚至在登录页面上卡住了认证...
答案 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');
}));