【问题标题】:Trying to setup a custom authentication in Laravel尝试在 Laravel 中设置自定义身份验证
【发布时间】:2020-08-20 00:10:52
【问题描述】:

所以我没有使用 Laraval 的经验,并且一直在尝试制作一个不使用默认表 Users 的 Auth。 我遵循了一些教程并最终得到了一个自定义身份验证,它至少不会给出不正确的数据库数据库或类似的错误,但是在尝试登录时不断给出错误密码或用户名的错误。

我尝试使用的表名为 usuaris,用于登录的列是 nomUsuaricontrasenya

这是我的自定义身份验证文件:

    <?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 配置文件:

 '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

【问题讨论】:

    标签: laravel


    【解决方案1】:

    改变

    $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;
        }
    

    【讨论】:

      猜你喜欢
      • 2019-07-04
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 2014-03-30
      • 2016-04-18
      • 1970-01-01
      • 2019-07-01
      相关资源
      最近更新 更多