php - TypeError: Illuminate\Auth\SessionGuard::login(): Argument #1 ($user) must be of type Illuminate\Contracts\Auth\Authenticatable,, App\Models\Admin giv
问题描述
我是 laravel 的初学者。我正在使用守卫进行多授权。我在管理员登录时遇到了这个问题:TypeError Illuminate\Auth\SessionGuard::login(): Argument #1 ($user) must be of type Illuminate\Contracts\Auth\Authenticatable, App\Models\Admin given, call in C:\Users\DELL\survey\app\Http\Controllers\AdminController.php 在第 34 行
这是 AdminController.php 文件
<?php
namespace App\Http\Controllers;
use App\Models\Admin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Contracts\Auth\Authenticatable;
class AdminController extends Controller
{
public function login()
{
return view('admin.login');
}
public function authenticate(Request $request)
{
$request->validate([
'email' => ['required', 'email'],
'password' => ['required']
]);
/** @var Admin $model */
$model = Admin::query()->where('email', $request->get('email'))->firstOrFail();
if(!$model){
return back()->with('error', 'Email or password is incorrect');
}
if (!Hash::check($request->get('password'), $model->password)) {
return back()->with('error', 'Email or password is incorrect');
}
Auth::guard('admin')->login($model);
return redirect()->route('dashboard')
->with('success', 'Welcome ' . $model->name . '!');
}
}
这是 login.blade.php
<x-guest-layout>
<x-auth-card>
<x-slot name="logo">
<a href="/">
<x-application-logo class="w-20 h-20 fill-current text-gray-500" />
</a>
</x-slot>
<!-- Session Status -->
<x-auth-session-status class="mb-4" :status="session('status')" />
<!-- Validation Errors -->
<x-auth-validation-errors class="mb-4" :errors="$errors" />
@include('partials.session-messages')
<form method="POST" action="{{ route('admin-authenticate') }}">
@csrf
<h3>Admin Login</h3><br>
<!-- Email Address -->
<div>
<x-label for="email" :value="__('Email')" />
<x-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus />
</div>
<!-- Password -->
<div class="mt-4">
<x-label for="password" :value="__('Password')" />
<x-input id="password" class="block mt-1 w-full"
type="password"
name="password"
required autocomplete="current-password" />
</div>
<!-- Remember Me -->
<div class="block mt-4">
<label for="remember_me" class="inline-flex items-center">
<input id="remember_me" type="checkbox" class="rounded border-gray-300 text-indigo-600 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50" name="remember">
<span class="ml-2 text-sm text-gray-600">{{ __('Remember me') }}</span>
</label>
</div>
<div class="flex items-center justify-end mt-4">
@if (Route::has('password.request'))
<a class="underline text-sm text-gray-600 hover:text-gray-900" href="{{ route('password.request') }}">
{{ __('Forgot your password?') }}
</a>
@endif
<x-button class="ml-3">
{{ __('Log in') }}
</x-button>
</div>
</form>
</x-auth-card>
</x-guest-layout>
我该如何解决?
解决方案
您的 Admin 模型应该是可验证的!
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admin extends Authenticatable
{
//Your code
}
推荐阅读
- android - Android studio 3.1.3 创建新项目与 c++ 支持同步失败
- algorithm - Photoshop 的高光或阴影更改背后的算法是什么?
- java - 我想从 viewpager 中的片段中获取 EditText 的所有值并想在活动中使用它们?
- c# - 将属性和值添加到现有类 c#
- sql - 尝试将 FOR XML Path 与 except 一起使用
- rest - java.lang.ClassNotFoundException: org.apache.http.impl.conn.PoolingClientConnectionManager 同时使用resteasy进行来自EJB的rest客户端调用
- ios - 从终端运行 iOS 的 Ionic Cordova 无法正常工作
- python - PyCharm 自动完成不显示方法和类
- javascript - 带有jquery ui滑块的动态输入字段不起作用
- python - 我可以在 tkinter 中使用 rgb 吗?