提问者:小点点

Laravel Auth::attemp()始终为false


首先,我看到了以下主题(以及许多其他主题):

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');       
}

我还去了文件应用程序


共2个答案

匿名用户

根据我以前的经验,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);
    }

}