【问题标题】:Attempt() method is undefined in Laravel 6Laravel 6 中未定义 Attempt() 方法
【发布时间】:2021-08-02 04:44:43
【问题描述】:

我正在尝试在 Laravel 项目中验证管理员身份。我的auth.php如下图:

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

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

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

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

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

AdminController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AdminController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    
    
    public function adminLogin(){
        return view('auth.adminLogin');
    }



    public function cheackAdminLogin(Request $request){
        $this->validate($request, [
        'email' => 'required|email',
        'password' => 'required|min:6'
        ]);
if (Auth::guard('admin')->attempt(['email' => $request->email,
               'password' => $request->password])) {

             return redirect()->intended('/admin');
        }
        
       return back()->withInput($request->only('email')); */
}
    
    }

AdminDashboardController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class AdminDasboardController extends Controller
{
    public function adminPanel()
    {
        return view('adminPanel');
    }
}

我遇到的问题,当我想检查管理员登录时,我编写的尝试()函数,我在编辑器中收到错误消息“未定义方法”。 我尝试使用 auth()->guard('admin')->attempt() 而不是 Auth::guard('admin')->attempt 但问题是一样的。 请帮忙

【问题讨论】:

  • 所以看起来guard('admin') 配置错误并且没有attempt() 方法。试试php artisan tinkerauth()-&gt;guard('web')-&gt;attempt()(应该是false)和auth()-&gt;guard('admin')-&gt;attempt()(会引发错误)。此外,auth()Auth:: 是做同样事情的不同方法:)
  • 好的,我会的。
  • 旁注,用户和管理员使用不同的模型会使身份验证变得困难。考虑使用角色,其中用户是可以登录的实体,不同的角色(用户、管理员)在登录后区分他们的权限。另外,包括你的Admin.php 模型;我敢打赌它缺少 Authenticatable 作为扩展,以及相关的特征

标签: php laravel laravel-6


【解决方案1】:

可能是类型提示的问题

use Illuminate\Auth\SessionGuard;
/** @var SessionGuard $adminGuard */
$adminGuard = Auth::guard("admin");

if ($adminGuard->attempt($credentials)) {
...

【讨论】:

    猜你喜欢
    • 2020-07-06
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多