【问题标题】:Multi auth laravel 5.2, autentication not working多重身份验证 laravel 5.2,身份验证不起作用
【发布时间】:2016-03-05 18:28:44
【问题描述】:

我正在开发一个应用程序,它在 laravel 5.2 上具有两种类型的用户,用户和管理员。我的问题是 autenticacion 永远不会成功。

我将 config/auth 更改为:

return [

'defaults' => [
    'guard' => 'user',
    'passwords' => 'user',
],

'guards' => [
    'user' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],
],

'passwords' => [
    'user' => [
        'provider' => 'users',
        'email' => 'auth.emails.password',
        'table' => 'password_resets',
        'expire' => 60,
    ],
    'admin' => [
        'provider' => 'admins',
        'username' => 'auth.username.password',
        'table' => 'password_resets',
        'expire' => 60,
    ],
 ],

];

Model Admin(除了表'users'之外,用户模型相同):

namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable
{
    public $timestamps = False;
    protected $table = 'admins';
    protected $fillable = [
         'name', 'username', 'password',
    ];

   protected $hidden = [
      'password', 'remember_token',
   ];
}

控制器管理员:

public function auth(Request $request) {
    $credentials = $request->except('_token'); // "username" => "ewfer" "password" => "fwerfwegf"

    if(!Auth::guard('admin')->attempt($credentials)) { // always enters here, even with the right details
        Session::flash('flash_error', 'Something went wrong with your login');
        return redirect(url('/admin/login'));
    }
    return redirect('/admin');
}

我的管理员表的默认值:

Schema::create('admins', function (Blueprint $table) {
        $table->increments('username');
        $table->string('password');
        $table->rememberToken();
    });
DB::table('admins')->insert([
        'username' => 'miguel',
        'password' => Hash::make('password'),
    ]);

请注意,对于管理员登录,我们需要用户名,而不是用于用户登录的电子邮件。

【问题讨论】:

    标签: php laravel-5.2


    【解决方案1】:

    好吧,我发现了问题,这是一个非常愚蠢的问题,对此感到抱歉。问题是这一行$table->increments('username');,我没有注意到 BD 中存储了什么,它是一个 int (1) 而不是“miguel”。除此之外一切都很完美

    【讨论】:

      猜你喜欢
      • 2016-04-28
      • 2016-04-05
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 2016-05-10
      • 1970-01-01
      相关资源
      最近更新 更多