【问题标题】:auth:admin not working身份验证:管理员不工作
【发布时间】:2018-09-22 04:09:44
【问题描述】:

我已经创建了管理员登录系统,但是在 auth::attempt 上它总是返回 false 这是我的代码

$credentials= ['email' => $request->get('email'), 'password'=>$request->get('password')]; 

   if (Auth::guard('admin')->attempt($credentials)) {
          return redirect()->intended(route('admin.dashboard'));
   }

在管理模型中

    <?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable
{
    protected $guard = 'admin';
    protected $primary_key = 'admin_id';
    protected $table = 'admins';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'admin_firstname', 'admin_lastname', 'email', 'admin_username', 'admin_phone', 'admin_picture', 'admin_gender', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
   }

在 auth.php 中

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

auth::attempt 失败不知道为什么它不起作用

它的日志记录但在管理中间件中发现了问题 $this->middleware('auth:admin');

我的 auth.php

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

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],

],


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

    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin::class,
    ],
],

degault 保护设置为 web,但在仪表板控制器中我使用的是 auth:admin 请检查

【问题讨论】:

  • 您是否也在 auth.php 中添加了提供程序?
  • 是的,我已经添加了
  • 你能更新你的auth.php文件中的问题吗

标签: laravel laravel-5 laravel-5.5 laravel-5.6


【解决方案1】:

您的代码看起来不错。您需要确保。您在注册时使用了bcrypt()。像这样

$password=bcrypt($request['password']);

你需要在 config/auth.php 中进行更改 你的后卫应该是这样的

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],
        'admin-api' => [
            'driver' => 'token',
            'provider' => 'admins',
        ],
    ], 

提供者应该是

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


    ],

和密码

'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'admins' => [
            'provider' => 'admins',
            'table' => 'password_resets',
            'expire' => 15,
        ],
    ],

这是演示更改您的模型和驱动程序

【讨论】:

  • 是的,在数据​​库中我看到我的密码被加密了
  • 发布您的 auth.php 和注册控制器代码
  • 当我删除任何中间件时它的日志记录正确,然后它重定向到仪表板
  • 但是当我添加 auth:admin 然后它重定向到管理员登录
  • 公共函数 __construct() { $this->middleware('guest:admin', ['except' => ['logout']]); } 添加管理员登录控制器
猜你喜欢
  • 1970-01-01
  • 2011-08-06
  • 2011-09-18
  • 2013-07-10
  • 2018-12-05
  • 2011-01-11
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多