Laravel 无需验证邮箱登出/排除AUTH路由中指定路由的方案
解决方案
你之前的拆分路由方案未生效的核心原因是路由注册顺序错误,Laravel路由从上到下匹配,默认Auth::routes()注册的路由优先级更高,你单独写的logout路由没有被匹配到,还是走了自带verified中间件的默认路由。以下是两种亲测可行的方案:
方案1:优先注册排除中间件的logout路由
将logout路由写在Auth路由注册之前,主动移除verified中间件校验:
// 优先匹配logout路由,排除邮箱验证中间件 Route::post('logout', 'Auth\LoginController@logout') ->name('logout') ->withoutMiddleware(['verified']); // 再注册带邮箱验证的其余Auth路由 Auth::routes(['verify' => true]);
方案2:在登录控制器中排除logout方法的校验
如果不想调整路由顺序,直接修改app/Http/Controllers/Auth/LoginController.php的构造方法,给logout方法单独排除verified中间件即可:
public function __construct() { $this->middleware('guest')->except('logout'); // 新增以下代码,给logout方法排除邮箱验证限制 $this->middleware('verified')->except('logout'); }
两种方案都不需要拆分整组Auth路由,代码简洁易维护。
内容的提问来源于stack exchange,提问作者anouar es-sayid
相关产品推荐
相关产品推荐

