我在login()
中覆盖了LoginController
方法。
这是我的方法:
public function login(Request $request)
{
$user = User::where('email', $request->email)->get()->first();
if(!$user) {
Session::flash('user.login', 'Пользователь не найден.');
return redirect()->route('login');
}
if($user->active === 0) {
Session::flash('user.login', 'Пользователь деактивирован.');
return redirect()->route('login');
}
$credentials = $request->only('email', 'password');
if(Auth::attempt($credentials)) {
// Auth::login($user, true);
return redirect()->intended('dashboard');
} else {
Session::flash('user.login', 'Неверный пароль.');
return redirect()->route('login');
}
}
但是当用户身份验证通过时,我会收到401
错误,这意味着Unauthenticated
。
我在auth
的构造函数中设置了UserController
的中间件。
public function __construct()
{
$this->middleware('auth');
}
Unauthenticated
错误的原因是什么?
编辑:
routes/web.php
档案
Auth::routes();
Route::get('/', 'HomeController@index')->name('dashboard');
Route::middleware('auth')->group(function() {
Route::middleware('role:superadministrator|administrator')->group(function() {
Route::get('acl', 'AclController@index')->name('acl.index');
Route::post('permissions', 'PermissionController@store')->name('permissions.store');
Route::put('roles', 'RoleController@update')->name('roles.update');
Route::post('roles', 'RoleController@store')->name('roles.store');
Route::resource('users', 'UserController');
Route::put('users/password', 'UserController@changePassword')->name('password.change');
});
});
答案 0 :(得分:0)
Do something like this:
public function __construct()
{
$this->middleware('guest')->except('logout');
}
$user = User::where('email', $request->email)->first();
//without get() to get record
$credentials = $request->only('email', 'password');
if(Auth::attempt($credentials)) {
// Authentication passed...
// Auth::login($user, true);
Session::put( 'name', $request->get ( 'username' ) );
Session::flash('user.login', 'Logged in');
return redirect()->intended('dashboard');
} else {
Session::flash('user.login', 'Неверный пароль.');
return redirect()->route('login');
}