我在Laravel 5.1中的项目和我在Composer更新后无法登录
我跑之前一切都在运转
composer update
我使用的标准内置于Laravel’s register and login process
AuthController.PHP中的函数Auth :: attempt()始终返回false.
我已经在Laravel 5.1的新项目上测试了它,这也是同样的问题.
我做了密码重置,创建了新用户,没有任何作用……
我收到此错误:
These credentials do not match our records
那些是更新的包:
Updating dependencies (including require-dev) - Removing giggsey/libphonenumber-for-PHP (7.2.6) - Installing giggsey/libphonenumber-for-PHP (7.2.8) Downloading: 100% - Removing symfony/var-dumper (v2.7.10) - Installing symfony/var-dumper (v2.7.11) Downloading: 100% - Removing symfony/translation (v2.7.10) - Installing symfony/translation (v2.7.11) Downloading: 100% - Removing symfony/routing (v2.7.10) - Installing symfony/routing (v2.7.11) Downloading: 100% - Removing symfony/process (v2.7.10) - Installing symfony/process (v2.7.11) Downloading: 100% - Installing symfony/polyfill-mbstring (v1.1.1) Downloading: 100% - Removing symfony/http-foundation (v2.7.10) - Installing symfony/http-foundation (v2.7.11) Downloading: 100% - Removing symfony/event-dispatcher (v2.8.3) - Installing symfony/event-dispatcher (v2.8.4) Downloading: 100% - Removing symfony/debug (v2.7.10) - Installing symfony/debug (v2.7.11) Downloading: 100% - Removing symfony/http-kernel (v2.7.10) - Installing symfony/http-kernel (v2.7.11) Downloading: 100% - Removing symfony/finder (v2.7.10) - Installing symfony/finder (v2.7.11) Downloading: 100% - Removing symfony/dom-crawler (v2.7.10) - Installing symfony/dom-crawler (v2.7.11) Downloading: 100% - Removing symfony/css-selector (v2.7.10) - Installing symfony/css-selector (v2.7.11) Downloading: 100% - Removing symfony/console (v2.7.10) - Installing symfony/console (v2.7.11) Downloading: 100% - Removing psy/psysh (v0.7.1) - Installing psy/psysh (v0.7.2) Downloading: 100% - Removing paragonie/random_compat (v1.2.1) - Installing paragonie/random_compat (v1.4.1) Downloading: 100% - Removing monolog/monolog (1.18.0) - Installing monolog/monolog (1.18.1) Downloading: 100% - Removing league/flysystem (1.0.18) - Installing league/flysystem (1.0.20) Downloading: 100% - Removing symfony/polyfill-util (v1.1.0) - Installing symfony/polyfill-util (v1.1.1) Downloading: 100% - Removing symfony/polyfill-PHP56 (v1.1.0) - Installing symfony/polyfill-PHP56 (v1.1.1) Downloading: 100% - Removing propaganistas/laravel-phone (2.6.1) - Installing propaganistas/laravel-phone (2.7.0) Downloading: 100% - Removing symfony/yaml (v3.0.3) - Installing symfony/yaml (v3.0.4) Downloading: 100% - Removing PHPunit/PHPunit (4.8.23) - Installing PHPunit/PHPunit (4.8.24) Downloading: 100% - Removing PHPspec/PHPspec (2.4.1) - Installing PHPspec/PHPspec (2.5.0) Downloading: 100%
postLogin函数(它的标准,我没有做任何更改):
public function postLogin(Request $request) { $this->validate($request,[ $this->loginUsername() => 'required','password' => 'required',]); // If the class is using the ThrottlesLogins trait,we can automatically throttle // the login attempts for this application. We'll key this by the username and // the IP address of the client making these requests into this application. $throttles = $this->isUsingThrottlesLoginsTrait(); if ($throttles && $this->hasTooManyLoginAttempts($request)) { return $this->sendLockoutResponse($request); } $credentials = $this->getCredentials($request); if (Auth::attempt($credentials,$request->has('remember'))) { return $this->handleUserWasAuthenticated($request,$throttles); } // If the login attempt was unsuccessful we will increment the number of attempts // to login and redirect the user back to the login form. Of course,when this // user surpasses their maximum number of attempts they will get locked out. if ($throttles) { $this->incrementLoginAttempts($request); } return redirect($this->loginPath()) ->withInput($request->only($this->loginUsername(),'remember')) ->withErrors([ $this->loginUsername() => $this->getFailedLoginMessage(),]); }
postRegister函数:
public function postRegister(Request $request) { $validator = $this->validator($request->all()); if ($validator->fails()) { $this->throwValidationException( $request,$validator ); } Auth::login($this->create($request->all())); return redirect($this->redirectPath()); }
解决方法
我发现了问题!
我正在使用这个包Roles And Permissions For Laravel 5并忘记在创建时为用户设置一个具有登录权限的角色…
显然我正在使用在播种过程中创建的用户进行测试(它附加了一个角色),但当我尝试注册新用户时,问题就开始了……
$用户> attachRole($regularUserRole);
/** * Create a new user instance after a valid registration. * * @param array $data * @return User */ protected function create(array $data) { $team = new Team(["name" => ""]); $regularUserRole = Role::where('slug','user')->first(); $user = User::create([ 'name' => $data['name'],'email' => $data['email'],'password' => bcrypt($data['password']),]); if ($team->save() && $regularUserRole) { $user->team()->associate($team); $user->attachRole($regularUserRole); if ($user->save()) { $team->owner()->associate($user); $team->save(); return $user; } } return false; }