【发布时间】: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