尝试在Laravel中设置自定义身份验证

时间:2020-05-05 10:48:39

标签: laravel

所以我没有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');
        }
    }

Image of the table ususaris and user im trying to use

1 个答案:

答案 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;
    }