Я начинающий в Ларавеле. Извините за любой глупый вопрос.
Мой сценарий это следующий:
В Sql Server есть предыдущая база данных с пользовательской таблицей. Эта таблица называется USUARIO_EMITENTE. В этой таблице есть ключевое поле под названием «пользователь» и поле «пароль», в котором используется md5 (я не виноват, он уже был там).
Итак, я изменил модель User для использования этой таблицы следующим образом:
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'user', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
protected $table = 'Usuario_Emitente';
}
мой loginController используется по умолчанию (используется laravel 5.5):
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
Теперь я должен изменить LoginController на:
1) Получите поле ‘user’ вместо адреса электронной почты по умолчанию для laravel Auth;
2) использовать md5 вместо bcrypt;
3) После регистрации перенаправить в / меню
Должен ли я изменить какой-либо другой класс, чтобы сделать это?
Кто-нибудь может мне помочь?
Этот процесс входа в систему требует нескольких вещей — установка имен данных формы, настройка маршрута для формы входа в систему и сопоставление маршрута с логикой, которая выполняет проверки хеширования и перенаправления / проверки. (Вы также можете добавить проверку сервера и сообщение об ошибке).
(1) когда вы отправляете форму для Auth, вы используете имя пользователя и говорите pass,
(2) в route.php вы перенаправляете свой URL-адрес авторизации POST на LoginController (новый метод) loginUser:
Route::post('/login', 'LoginController@loginUser');
(3) Добавьте логику в вашу функцию loginUser (), которая обрабатывает крипту, данные полей и перенаправление (здесь вы также теоретически хотите запустить проверку и проверки входных данных). ПРИМЕЧАНИЕ. По мнению сообщества, md5 over bcrypt НЕ рекомендуется, но это можно сделать вручную (Как использовать md5 вместо bcrypt?)!
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function loginUser()
{
// $data = \Request::all();
$user = \Request::input(‘user’);
$pass = \Request::input(‘pass’);
if ( !isset($user) || !isset($pass) ) {
// Bad Creds. No access!
return redirect('/loginPage');
} else {
$user = User::where('user', $user)->where('password', md5($pass))->first();
if ($user) {
Auth::login($user);
return redirect()->intended('/');
} else {/* No User Found? */}
}
}
}
(4) Согласно тому же посту выше, вам также необходимо создать нового поставщика услуг для MD5 для использования в вашем классе LoginController. Это позволяет вам использовать «md5 (…)», как указано выше. Поскольку другой пользователь ответил на этот вопрос, я оставлю ссылку, по которой вы сможете перейти, чтобы посмотреть, что он сделал.
Надеюсь это поможет.
Ссылка
Других решений пока нет …