由于某些原因我无法理解,当我在登录后使用Redirect::intended()
方法时,我总是被发送到我的路由文件的fournisseurs/ax_getListProduits
URL,无论我真正想要的URL是什么,有两个例外:
fournisseurs/ax_getListProduits
路线,一切正常Session::get('url.intended');
调用,则会显示正确的目标URL,并且它可以正常工作(但如果我在Auth::attempt
之后添加此代码,我会被发送到{ {1}})。我无法理解发生了什么......我在这里或在Laravel Github存储库中找不到任何类似的问题,这让我觉得我做错了什么,但我找不到它......我发布了这个问题是Github上的一个可能的错误,但没有成功,这里:https://github.com/laravel/framework/issues/2668。
以下是我的路线文件和我的登录控制器代码:
routes.php文件
fournisseurs/ax_getListProduits
登录控制器:
Route::group(array('before' => 'auth'), function() {
Route::get('/', array("as"=>"home", function() {
return Redirect::to("fournisseurs");
}));
Route::resource('usergroups', 'UsergroupsController');
Route::get('fournisseurs/ax_produits', 'FournisseursController@ax_produits');
Route::post('fournisseurs/ax_getProduit', 'FournisseursController@ax_getProduit');
Route::post('fournisseurs/ax_updProduit', 'FournisseursController@ax_updProduit');
Route::post('fournisseurs/ax_getListProduits', 'FournisseursController@ax_getListProduits');
Route::resource('fournisseurs', 'FournisseursController');
Route::resource('adresses', 'AdressesController', array('only' => array('store', 'destroy', 'edit', 'update')));
Route::get('/adresses/create/{frs_id}', array('as'=>'adresses.create', 'uses'=>'AdressesController@create'));
Route::resource('contacts', 'ContactsController', array('only' => array('store', 'destroy', 'edit', 'update')));
Route::get('/contacts/create/{frs_id}', array('as'=>'contacts.create', 'uses'=>'ContactsController@create'));
});
Route::get('login', array('as' => 'login', 'uses' => 'SessionsController@create'));
Route::get('logout', array('as' => 'logout', 'uses' => 'SessionsController@destroy'));
Route::resource('sessions', 'SessionsController', array('only' => array('create', 'store', 'destroy')));
查看create.blade
class SessionsController extends BaseController {
public function create() {
// if I uncomment the following line, everything is OK
// echo Session::get('url.intended');
return View::make('sessions.create');
}
public function store() {
$input = Input::all();
$attempt = Auth::attempt(array(
"nom" => $input["nom"],
"password" => $input["password"]
));
if($attempt) return Redirect::intended("/");
return Redirect::back()->with("flash_error", "Nom ou mot de passe invalide")->withInput();
}
public function destroy() {
Auth::logout();
return Redirect::home();
}
}
default.blade布局
@extends("layouts.default")
@section("content")
<div class="login_form">
<div class="row"><div class="col-md-4 col-md-offset-4">
<h2>Identification</h2>
</div></div>
<div class="row">
<div class="col-md-4 col-md-offset-4">
{{ Form::open(array('route' => 'sessions.store', 'class' => 'form', 'role' => 'form')) }}
<div class="form-group">
{{ Form::label('nom', 'Nom') }}
{{ Form::text('nom', '', array('autocomplete'=>'off', 'class' => 'form-control')) }}
</div>
<div class="form-group">
{{ Form::label('password', 'Mot de passe') }}
{{ Form::password('password', array('autocomplete'=>'off', 'class' => 'form-control')) }}
</div>
{{ Form::submit("Connexion", array("class"=>"btn btn-primary")) }}
{{ Form::close() }}
</div>
</div>
</div>
@stop
答案 0 :(得分:1)
我找到了一些时间来处理这个问题,问题来自于一个不幸的ajax调用“不需要的路线”(fournisseurs/ax_getListProduits
)。在页面创建之后,这个ajax调用是,即使它返回404错误,Laravel也会在页面创建和表单提交之间更新url.intended
会话变量。