【发布时间】: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 tinker:auth()->guard('web')->attempt()(应该是false)和auth()->guard('admin')->attempt()(会引发错误)。此外,auth()和Auth::是做同样事情的不同方法:) -
好的,我会的。
-
旁注,用户和管理员使用不同的模型会使身份验证变得困难。考虑使用角色,其中用户是可以登录的实体,不同的角色(用户、管理员)在登录后区分他们的权限。另外,包括你的
Admin.php模型;我敢打赌它缺少Authenticatable作为扩展,以及相关的特征