Я разрабатываю панель администратора на PHP с помощью рамки Laravel. Некоторые из передней части уже сделаны. С учетом сказанного, база данных и пользовательская таблица уже созданы и имеют контент. Есть ли способ использовать мою существующую базу данных и таблицу с классом Laravel Auth?
У моей базы данных есть собственный способ шифрования паролей – может ли Laravel адаптироваться к этому?
Вы можете сделать auth напрямую, если вам нужно:
$user = User::where('email', Input::get('email'))->first(); if( $user && $user->password == md5(Input::get('password')) ) { Auth::login($user); /// will log the user in for you return Redirect::intended('dashboard'); } else { /// User not found or wrong password }
Обратите внимание, что пароли, проделанные Laravel, действительно безопасны, и хэшированные, скажем, MySQL, противоположны. Таким образом, вы можете конвертировать ваши пароли каждый раз, когда ваш пользователь регистрируется, не прося его:
$password = Input::get('password'); $email = Input::get('email'); if (Auth::attempt(array('email' => $email, 'password' => $password))) { return Redirect::intended('dashboard'); } else if( $user && $user->password == md5($password) ) { Auth::user()->password = Hash::make($password); Auth::user()->save(); return Redirect::intended('dashboard'); } else { /// User not found or wrong password }
Следуя советам Антонио Карлоса Рибейро (спасибо человеку!), Вот как я справился с этим для Laravel 5.2:
Http/Controllers/Auth/AuthController.php
скопируйте и вставьте метод login()
из vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticateUsers.php
Добавьте их в верхнюю часть файла:
use Illuminate\Support\Facades\Auth as fAuth;
use Hash;
Замените это:
if (Auth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) { return $this->handleUserWasAuthenticated($request, $throttles); }
Этим :
if (fAuth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) { return $this->handleUserWasAuthenticated($request, $throttles); } else { $user = User::where('email', $request->email)->first(); if ($user && $user->password == md5($request->password)) { $user->password = Hash::make($request->password); $user->save(); if (fAuth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) { return $this->handleUserWasAuthenticated($request, $throttles); } } }