【问题标题】:User And Admin Auth attempt conflicts with each other [closed]用户和管理员身份验证尝试相互冲突[关闭]
【发布时间】:2022-01-25 10:04:34
【问题描述】:

起初很抱歉我的英语不好 我在 UserController 中为我的用户登录创建了 Auth::attempt 并注册到我的网站 我在 AdminController 中创建了另一个 Auth:attempt 以登录到管理面板以在网站中添加或编辑某些内容。

当我想登录管理面板时,我在登录表单中输入管理员用户名和密码以登录面板,但它显示用户名或密码错误。 但是当我输入用户的用户名和密码时,它成功登录管理面板
目前我正在使用 laravel 8

【问题讨论】:

  • 你能给我们看一些代码吗?不看代码就很难贡献任何东西

标签: php laravel


【解决方案1】:

如果你想在 laravel 中创建一个多重认证系统。 有卫兵的概念。 laravel 认证系统使用 config/auth.php 目录下提到的默认守卫

您必须为您的管理面板注册提供程序和保护。 注册守卫

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

注册提供商

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

在注册您的提供者和警卫之后。为您的管理员创建一个单独的登录控制器,如下所示

use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;

class AdminLoginController extends Controller 
{

    use AuthenticatesUsers;

    protected string $guard = 'admin';

    public function __construct() 
    {
        $this->middleware('guest:admin')->except('logout');
    }

    public function guard() 
    {
        return Auth::guard($this->guard);
    }

    public function showLoginForm()
    {
        // view for admin login
    }

    public function authenticated(Request $request, $user)
    {
        // redirect after authentication
    }

    public function loggedOut() 
    {
        // redirect after logout
    }
}

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2013-11-15
    相关资源
    最近更新 更多