Redirect::intended()
ログイン後にメソッドを使用している場合、何らかの理由で理解できませんfournisseurs/ax_getListProduits
.2つの例外を除いて、実際に意図したURLが何であれ、常にroutesファイルのURLに送信されます。
fournisseurs/ax_getListProduits
postルートを削除すれば、すべて問題ありません- ログイン ページが表示される前にエコー
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>