所以我没有Laraval的经验,一直在尝试制作不使用默认表Users的Auth。 我遵循了一些教程,最后得到了一个自定义Auth,它至少不会给出错误的数据库数据库或类似错误的错误,但是在尝试登录时却总是给出错误的密码或用户名错误。
我要使用的表称为 usuaris ,用于登录的列为 nomUsuari 和 contrasenya 。
这是我的自定义身份验证文件:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class customAuth extends Authenticatable
{
use Notifiable;
protected $table = 'usuaris';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'nomUsuari','contrasenya'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'contrasenya',
];
public function getAuthPassword()
{
return $this->contrasenya;
}
}
Auth.php conf:
'defaults' => [
'guard' => 'web',
'passwords' => 'usuaris',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'web' => [
'driver' => 'session',
'provider' => 'usuaris',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'usuaris' => [
'driver' => 'eloquent',
'model' => App\customAuth::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
'usuaris' => [
'provider' => 'usuaris',
'table' => 'password_resets',
'expire' => 60,
],
],
验证函数:
function checklogin(Request $request){
$this->validate($request, [
'nomUsuari' => 'required',
'contrasenya' => 'required'
]);
$user_data = array(
'nomUsuari' => $request->get('nomUsuari'),
'password' => $request->get('contrasenya')
);
//print_r($user_data);
if(Auth::attempt($user_data)){
return redirect('successlogin');
} else {
return back()->with('error', 'Datos incorrectos');
}
}
答案 0 :(得分:0)
更改
$user_data = array(
'nomUsuari' => $request->get('nomUsuari'),
'password' => $request->get('contrasenya')
);
到
$user_data = array(
'nomUsuari' => $request->get('nomUsuari'),
'password' => bcrypt($request->get('contrasenya'))
);
然后删除
public function getAuthPassword()
{
return $this->contrasenya;
}