簡體   English   中英

Laravel 5.3 Auth:嘗試無法正常工作

[英]Laravel 5.3 Auth:attempt is not working

不管我插入有效還是無效的憑據,用戶始終會重定向到RedirectIfAuthenticated中間件中定義的路由。 我的問題:如何將經過身份驗證的用戶重定向到與未經身份驗證的用戶不同的路由?

RedirectIfAuthenticated(中間件):

public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/');
        }

        return $next($request);

這是我的LoginController:

   public function __construct()
    {
        $this->middleware('guest', ['except' => 'logout']);
    }

public function authenticate(Request $data){
    if (Auth::attempt( ['cnpj' => $data['cnpj'], 'password' => $data['password'] ] )){
        return redirect()->route('someroute');
    }
    else{
        return redirect()->route('login');

    }

路線:

Route::get('/', function () {
    return view('welcome');
}) -> name('/');

Route::post('/register', 'Auth\RegisterController@create');

Route::get('/register', function () {
    return view('auth.register');
});

Route::get('/login', function (){
    return view('auth.login');
})->name('login');

Route::post('/login', 'Auth\LoginController@authenticate');

LoginController ,已將guest中間件設置為適用於除logout之外的所有路由。 這意味着通過身份驗證的用戶永遠無法進入authenticate方法,因為中間件已經運行並且已經重定向了該用戶。

最簡單的解決方法是將guest方法添加authenticate方法到guest中間件:

public function __construct()
{
    $this->middleware('guest', ['except' => ['logout', 'authenticate']]);
}

從您的問題來看,您似乎不太了解Laravel的中間件,路由和身份驗證概念。 我強烈建議您重新閱讀有關這些功能的文檔,因為您似乎正在嘗試手動實現框架中已存在的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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