php - usuario - modificar login laravel
Laravel: ¿Cómo puedo cambiar el nombre de campo predeterminado de la contraseña de autenticación? (4)
En la app/Http/Controllers/Auth/LoginController
anula la clase predeterminada agregando:
/**
* Validate the user login request.
*
* @param /Illuminate/Http/Request $request
* @return void
*/
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => ''required'', ''passwd'' => ''required'',
]);
}
No olvide agregar el use Illuminate/Http/Request;
Podría ser que tenga que agregar esto también a su LoginController
.
/**
* Get the needed authorization credentials from the request.
*
* @param /Illuminate/Http/Request $request
* @return array
*/
protected function credentials(Request $request)
{
return $request->only($this->username(), ''passwd'');
}
Deberias hacer eso.
Actualmente estoy trabajando en mi primer proyecto de laravel y estoy enfrentando un problema.
Si tiene experiencia con laravel, probablemente sepa que al llamar a php artisan make:auth
obtendrá un mecanismo predefinido que maneja el inicio de sesión y el registro.
Este mecanismo está configurado para comprender un par de palabras de uso común con el fin de automatizar todo el procedimiento.
El problema que ocurre en mi caso es que estoy usando Oracle DB y no me deja tener una columna de tabla con el nombre de password
porque es una palabra clave del sistema y arroja errores al intentar insertar un usuario.
Hasta ahora, he tratado de cambiar mi columna de password
para passwd
y funcionó en mi formulario de registro como se esperaba. La fila Usuario se insertó con éxito y mi página se redirigió a / home.
Pero cuando intento cerrar la sesión y volver a iniciar sesión, aparece este error que me dice que mis credenciales no son correctas.
En cuanto a mi código, he cambiado mi RegisterController.php
para que tome nombre de usuario en lugar de correo electrónico
protected function validator(array $data)
{
return Validator::make($data, [
''username'' => ''required|max:50|unique:ECON_USERS'',
''passwd'' => ''required|min:6|confirmed'',
]);
}
protected function create(array $data)
{
return User::create([
''username'' => $data[''username''],
''passwd'' => bcrypt($data[''passwd''])
]);
}
El usuario $ rellenable
protected $fillable = [
''username'', ''passwd''
];
Supongo que Auth está intentando autenticarse con un email
y no con un username
o que Auth está buscando una password
y no passwd
En su AuthController.php (ubicado en la aplicación / http / Controladores / Auth)
public function postLogin(Request $request)
{
$this->validate($request, [
''username'' => ''required'',
''password'' => ''required'',
]);
$credentials = ($request->only(''username'', ''password''));
if ($this->auth->attempt($credentials)) {
//do something, credentials is correct!
}
return "Ops! snap! seems like you provide an invalid login credentials";
}
Por tener un username
de username
lugar de un email
, puedes sobreescribir el nombre de usuario () en tu LoginController.php
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
return ''username'';
}
Y para passwd
lugar de password
, puede definir un acceso en su App / User.php
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
return $this->passwd;
}
login.blade.php : Reemplace la entrada de email
con username
pero no cambie el nombre de la entrada por password
.
Utilizar esta. Es trabajo para mi
Hasta ahora he cambiado el User.php
public function getAuthPassword(){
return $this->senha;
}
y
public function setPasswordAttribute($value)
{
$this->attributes[''password''] = bcrypt($value);
}
También en LoginController.php
public function username()
{
return ''usuario'';
}