【发布时间】:2019-06-26 12:49:46
【问题描述】:
在我的 Laravel 实例中,守卫或中间件不起作用。我的管理面板始终是可见的身份验证或非身份验证。我不明白问题是什么。
路线
Route::get('/admin', 'admin\adminController@index')->middleware('auth:admin');
Route::get('/admin-login', 'auth\adminLoginController@index');
Route::post('/admin-login', 'auth\adminLoginController@login')->name('admin.login.submit');
控制器
<?php
namespace App\Http\Controllers\auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;
class adminLoginController extends Controller
{
function __construct()
{
$this->middleware('guest:admin');
}
public function index()
{
return view('auth.admin-login');
}
public function login(Request $request)
{
$this->Validate($request, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], false, false)) {
return redirect('/admin');
}
return redirect()->back()->with('message', 'Invalid Information');
}
}
如果我删除__construct(),那么我可以访问管理员登录页面,否则我无法进入!!
我的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,
],
],
adminController
namespace App\Http\Controllers\admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
class adminController extends Controller
{
public function index()
{
$user = User::all();
$maleuser = User::where('gender', 'male')->get();
$femaleuser = User::where('gender', 'female')->get();
return view('admin/index')
->with('users', $user)
->with('maleusers', $maleuser)
->with('femaleusers', $femaleuser);
}
}
【问题讨论】: