#php #laravel-7
#php #laravel-7
Вопрос:
Я использую 2 метода аутентификации в проекте Laravel 7. Аутентификация по умолчанию и аутентификация вручную. Аутентификация по умолчанию используется для пользователя и ручная аутентификация для администратора. Но при ручной аутентификации, когда учетные данные указаны, маршрут перенаправляется обратно. Пожалуйста, кто-нибудь мне поможет. Я не могу понять ошибку, где я что-то пропустил.
Вот мой маршрут:
//Admin Authentication
Route::get('/admin', 'AdminController@index')->name('adminLogin');
Route::post('/adminLogin', 'AdminController@adminLogin');
Route::group(['middleware' => ['admin']], function () {
Route::get('/admin/home', 'AdminController@adminHome')->name('adminHome');
Route::post('adminLogout', 'AdminController@adminLogout');
});
Контроллер администратора:
public function adminLogin(Request $request)
{
$this->validator($request);
if(Auth::guard('admin')->attempt($request->only('email','password'),$request->filled('remember'))){
//Authentication passed...
return redirect('/admin/home')->with('success','You are Logged in as Admin!');
}
//Authentication failed...
return $this->loginFailed();
}
Промежуточное программное обеспечение:
public function handle($request, Closure $next, $guard = 'admin')
{
if (!Auth::guard($guard)->check()) {
return redirect('/admin');
}
return $next($request);
}
Обработчик:
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
if ($request->is('admin') || $request->is('admin/*')) {
return redirect()->guest('/admin');
}
return redirect()->guest(route('index'));
}
Форма входа:
<form role="form" action="{{ url('/adminLogin') }}" method="post">
@csrf
<div class="form-group">
<a href="#" class="pull-right label-forgot">Forgot email?</a>
<label for="inputUsernameEmail">Username or email</label>
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="form-group">
<a href="#" class="pull-right label-forgot">Forgot password?</a>
<label for="inputPassword">Password</label>
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="checkbox pull-left">
<label>
<input type="checkbox">Remember me</label>
</div>
<button class="btn btn btn-primary pull-right" type="submit">
Log In
</button>
</form>