[英]How to redirect the user to the same page after login?
我有一個login.blade.php,因此,當用戶訪問“ project.test / login”時,他具有要登錄的電子郵件和密碼字段。
我也有具有主菜單的header.blade.php,在此主菜單中有一個鏈接“ Create congress”。 如果用戶未通過身份驗證,然后單擊“創建會議”,則該用戶不需要訪問該頁面,則應將其重定向到登錄頁面。 成功登錄后,應將他重定向到“創建會議”頁面。
一切正常。
懷疑:
但是當用戶訪問“ http://project.test/congress/1/congresstest/registration ”時,我還有一個“ registration.blade.php”。 如果用戶未經身份驗證訪問此頁面,則會顯示以下消息:
@if(!\Auth::check())
<div class="alert alert-info" role="alert">
<span>
Already have an account?
<a data-toggle="modal"
data-target=".bd-example-modal-lg"
class="font-weight-bold" href="">Login.</a>
</span>
</div>
@endif
如果用戶單擊“登錄”,則會顯示一個模式,以便用戶可以輸入電子郵件和密碼;如果成功登錄,則該模式應關閉,並且應將其重定向到同一注冊頁面。
問題是,如果用戶使用模式形式的表單成功登錄了該頁面“ http://project.test/congress/1/congresstest/registration ”,他將被重定向到“創建會議”頁面,而不是停留在該頁面上注冊頁面。 您知道如何解決此問題嗎?
問題的相關代碼:
Login.blade.php:
<form class="clearfix" method="POST" action="{{ route('login') }}">
{{ csrf_field() }}
<div class="form-group col-12 px-0">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" value="{{ old('email') }}" name="email" required autofocus>
</div>
<div class="form-group col-12 px-0">
<label for="inputEmail4">Password</label>
<input type="password" class="form-control" name="password" required>
</div>
<button type="submit">Login</button>
</form>
的LoginController:
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
protected function authenticated(Request $request, $user)
{
return redirect()->intended($this->redirectTo);
}
}
header.blade.php及其主菜單,其中包含用於創建新會議的鏈接:
<li>
<a href="{!! route('congress.create') !!}"> Create Congress </a>
</li>
使用登錄表單的模態:
<div class="modal fade bd-example-modal-lg" id="modal2" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Login</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="container">
<div class="row">
<form class="clearfix" method="POST" action="{{ route('login') }}">
{{ csrf_field() }}
<div class="form-group col-12 px-0">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" value="{{ old('email') }}" name="email" required autofocus>
</div>
<div class="form-group col-12 px-0">
<label for="inputEmail4"
class="text-heading font-weight-semi-bold">Password
<a href="{{ route('password.request') }}" class="text-gray ml-1" style="text-decoration: underline">
<small>Recover Password</small></a> </label>
<input type="password" class="form-control" name="password" required>
</div>
<button type="submit" class="btn btn-primary btn d-block w-100">Login</button>
</form>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
路線:
Route::get('/', [
'uses' => 'FrontController@index',
'as' =>'index'
]);
// Auth routes
Auth::routes();
Route::get('auth/{provider}/callback', [
'uses' => 'OauthController@handleProviderCallback',
]);
// route to the registration page
Route::post('/congress/{id}/{slug?}/registration', [
'uses' => 'RegistrationController@storeQuantity',
'as' =>'congresses.registration'
]);
Route::group(['prefix' => '', 'middleware' => 'auth'], function(){
// route to the create congress page
Route::get('/congress/create', [
'uses' => 'CongressController@create',
'as' => 'congress.create'
]);
}
CongressController:
class CongressController extends Controller
{
public function create()
{
return view('congresses.create')->with('categories', Category::all());
}
}
您需要為此使用會話,在congresstest中創建以下內容
$uri = $request->path();
$request->session()->put('last_uri', $uri);
然后成功登錄:
protected function authenticated(Request $request, $user)
{
$last_uri = $request->session()->get('last_uri');
// or just simply return redirect()->route('NEEDED URI');
return redirect()->route($last_uri);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.