Laravel - How to redirect to a desired page when user is not authenticated(Laravel-当用户未通过身份验证时如何重定向到所需页面)
本文介绍了Laravel-当用户未通过身份验证时如何重定向到所需页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试使用扩展类中的__constructor
(AdminController
扩展AdminBaseController
),但显然它不起作用,我不知道可能是什么,这里您可以看到我的两个类:
AdminBaseController.php
class AdminBaseController extends Controller
{
public function __construct(){
if (!Auth::user()){
return view('admin.pages.login.index');
}
}
}
AdminController.php
class AdminController extends AdminBaseController
{
public function __construct(){
parent::__construct();
}
public function index()
{
return view('admin.pages.admin.index');
}
public function ajuda()
{
return view('admin.pages.admin.ajuda');
}
}
编辑
这是我的admin
路由组:
Route::group([
'prefix' => 'admin',
'middleware' => 'auth'
], function () {
Route::get('/', 'AdminAdminController@index');
Route::get('login', 'AdminAuthController@getLogin');
Route::post('login', 'AdminAuthController@postLogin');
Route::get('logout', 'AdminAuthController@getLogout');
Route::group(['prefix' => 'configuracoes'], function () {
Route::get('geral', 'AdminAdminConfiguracoesController@geral');
Route::get('social', 'AdminAdminConfiguracoesController@social');
Route::get('analytics', 'AdminAdminConfiguracoesController@analytics');
});
Route::get('ajuda', 'AdminAdminController@ajuda');
});
推荐答案
控制器不是检查用户是否经过身份验证的正确位置。为此,您应该使用中间件。要获取有关中间件是什么的信息,请查看here
让我们看看如何使用默认的Laravelauth
中间件来实现此目的:
首先去掉AdminBaseController
,只使用AdminController
然后您必须检查文件appHttpKernel.php
中是否启用了auth
中间件
您应该有这样一行:
protected $routeMiddleware = [
'auth' => AppHttpMiddlewareAuthenticate::class,
这意味着中间件处于活动状态并且可用于您的路由。
现在让我们进入appHttpMiddlewareAuthenticate.php
中的中间件类,以指定中间件的行为:
//this method will be triggered before your controller constructor
public function handle($request, Closure $next)
{
//check here if the user is authenticated
if ( ! $this->auth->user() )
{
// here you should redirect to login
}
return $next($request);
}
现在剩下的唯一要做的事情就是决定您应该应用中间件的路线。假设您有两条路由,您希望只有经过身份验证的用户才能访问它们,您应该指定以这种方式使用这两条路由的中间件:
Route::group( ['middleware' => 'auth' ], function()
{
Route::get('admin/index', 'AdminController@index');
Route::get('admin/ajuda', 'AdminController@ajuda');
});
这篇关于Laravel-当用户未通过身份验证时如何重定向到所需页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Laravel-当用户未通过身份验证时如何重定向到所需页面
基础教程推荐
猜你喜欢
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01