[英]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.