laravel - Laravel 自定义守卫记住我功能不适用于 AuthenticateUser 特征
问题描述
我创建了第二个使用该AuthenticatesUsers
特征的保护名称客户,一切似乎都运行良好,除了每次登录时记住我的功能,我似乎无法注销。所以我认为记住我正在使用默认防护,那么我该如何解决这个问题?我可以解决登录控制器中的问题吗?
客户登录控制器
<?php
namespace App\Http\Controllers\CustomerAuth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Auth;
use App\Customer;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
protected function guard()
{
return Auth()->guard('customer');
}
public function showLoginForm()
{
if(Auth::user() || Auth::guard('customer')->user())
{
return redirect('/');
}
else{
return view('customer-auth.login');
}
}
}
验证用户.php
protected function attemptLogin(Request $request)
{
return $this->guard()->attempt(
$this->credentials($request), $request->filled('remember')
);
}
解决方案
我使用了一些自定义警卫。我不得不制作一种新的注销方法,该方法使用
\Auth::guard($guard)->logout();
因为默认情况下,StatefulGuard.php 中的 logout() 方法不接受任何参数,例如警卫。
推荐阅读
- angular - 有人可以给我指一个网络图,描述 Azure 中 vm、nic、nsg、rg、vnet、子网、公共 ip、私有 ip 之间的关系吗?
- oracle - Oracle plsql 错误 PLS-00642:SQL 语句中不允许本地集合类型
- python - 为什么virtualenv上的`pip install`会引发“无法执行'--user'安装”?
- css - 跨浏览器字体粗细渲染
- postgresql - 如何在postgresql的WHERE子句中使用CASE语句的END变量?
- javascript - 如何通过定价计划限制快速 API 请求
- c# - WinUI 上的“Microsoft.UI.Xaml.Controls”中不存在命名空间名称“Expander”
- python - python执行的Traceback输出不足
- flutter - Flutter 中有可扩展的标签栏吗?
- discord.js - 检查消息内容是否在 discord.js 中有多行