簡體   English   中英

登錄后如何將用戶重定向到同一頁面?

[英]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">&times;</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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM