出于某种原因,我无法理解,当我Redirect::intended()
在登录后使用该方法时,我总是被发送到fournisseurs/ax_getListProduits
我的路由文件的 URL,无论我真正想要的 URL 是什么,但有 2 个例外:
- 如果我删除发布
fournisseurs/ax_getListProduits
路线,一切正常 - 如果我
Session::get('url.intended');
在登录页面显示之前添加回显调用,则会显示正确的预期 URL,并且它可以工作(但如果我在之后添加此代码Auth::attempt
,我将被发送到fournisseurs/ax_getListProduits
)。
我不明白发生了什么……我在这里或 Laravel Github 存储库中找不到任何类似的问题,这让我认为我做错了什么,但我找不到它……我把这个问题发布为Github 上可能存在错误,但没有成功,在这里:https ://github.com/laravel/framework/issues/2668 。
下面是我的路由文件和我的登录控制器代码:
路由.php
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')));
登录控制器:
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();
}
}
查看 create.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
和 default.blade 布局
<!DOCTYPE html>
<html lang="fr">
<head>
(...) head removed for code clarity
</head>
<body>
<div class="container">
@if(Session::get("flash_msg"))
<div class="row fox-info"><div class="col-md-12">
<div class="alert alert-info">
{{ Session::get("flash_msg") }}
</div>
</div></div>
@endif
<nav class="navbar navbar-default" role="navigation">
<a class="navbar-brand" href="#">EK | FOX</a>
<ul class="nav navbar-nav">
@yield("trail")
</ul>
<ul class="nav navbar-nav navbar-right">
@if(Auth::user())
<li class="dropdown">
<a href="#" data-toggle="dropdown">{{ Auth::user()->nom }} <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="{{ route('logout') }}">Déconnexion</a></li>
</ul>
</li>
@endif
</ul>
</nav>
@if(Session::get("flash_error"))
<div class="row"><div class="col-md-12">
<div class="alert alert-danger">
{{ Session::get("flash_error") }}
</div>
</div></div>
@endif
@yield("content")
</div>
(...) js scripts removed for code clarity
</body>
</html>