首先,我看到了以下主题(以及许多其他主题):
Laravel Auth::TRUMENT()是否始终为false?
Laravel 5身份验证:尝试()总是返回false
但我一直无法登录我的应用程序。我使用的是Laravel 5.6,我的表名为oc\u users
。
DB::table('oc_users')->insert(
[
'email' => 'myemail@gmail.com',
'pwd' => bcrypt('123456'),
'active' => true
]);
我去了拉威尔的档案室
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
protected $table = 'oc_users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['email', 'pwd'];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = ['pwd', 'remember_token'];
}
以及执行登录的代码:
public function form_login(Request $request)
{
if($request->filled('email') == FALSE || $request->filled('pwd') == FALSE)
return Redirect::back()->withErrors('Fill the credentials');
if (Auth::attempt(['email' => $request->email, 'pwd' => $request->pwd]))
return redirect()->intended('app');
return Redirect::back()->withErrors('Email or password wrong');
}
我还去了文件应用程序
根据我以前的经验,auth::trunt()函数默认检查密码
列。
要使代码正常工作,可以尝试以下方法。
在用户模型中添加:
public function getAuthPassword() {
return $this->pwd;
}
此函数将覆盖Authenticatable.php
中的默认getAuthPassword()函数
Laravel现在使用bcrypt
:
class User extends Model {
public function setPasswordAttribute($value) {
$this->attributes['password'] = bcrypt($value);
}
}