Php 检查用户';在所有控制器中进行身份验证';行动

Php 检查用户';在所有控制器中进行身份验证';行动,php,laravel,authentication,laravel-5,Php,Laravel,Authentication,Laravel 5,我使用Laravel5.3,我有以下问题 [更新] 我最初的问题是,当用户未登录系统时,在站点上执行操作时出现错误 启动浏览器时会发生这种情况,默认情况下,页面上会显示缓存的信息。为登录用户显示的站点界面,在他的系统中未显示。同时,在生成一些操作时,我得到一个错误,即用户未经授权 我还为所有路由提供了组身份验证中间件。当我重新启动站点的页面时,中间件被激活并重定向到登录页面。主要问题是浏览器显示缓存的信息 所以,除了路由中间件之外,我决定让auth签入控制器 [/更新] 我想在每个控制器的操作中

我使用Laravel5.3,我有以下问题

[更新]

我最初的问题是,当用户未登录系统时,在站点上执行操作时出现错误

启动浏览器时会发生这种情况,默认情况下,页面上会显示缓存的信息。为登录用户显示的站点界面,在他的系统中未显示。同时,在生成一些操作时,我得到一个错误,即用户未经授权

我还为所有路由提供了组身份验证中间件。当我重新启动站点的页面时,中间件被激活并重定向到登录页面。主要问题是浏览器显示缓存的信息

所以,除了路由中间件之外,我决定让auth签入控制器

[/更新]

我想在每个控制器的操作中检查用户的身份。手动在每个控制器的操作中进行身份验证并不是一个解决方案,因为有许多控制器和操作

所以我决定让它全球化

由于所有控制器都扩展了主控制器(App\Http\controllers\Controller.php),我决定编写 构造函数中的auth()->check():

function __construct()
{
    if(auth()->check()) dd('success');
}
但是。。。什么也没发生((然后我在主控制器扩展的BaseController中找到了callAction方法,并在此处进行了检查:

public function callAction($method, $parameters)
{
    if(auth()->check()) dd('success');
    return call_user_func_array([$this, $method], $parameters);
}
这次一切正常,但我不喜欢这个解决方案,因为编辑核心文件并不好

最后,我在主控制器中使用身份验证检查重新声明了callAction方法,但我也不喜欢这种方式


有什么解决办法吗?

如果有一组路线,这将是最简单的方法

Route::group(['middleware' => ['auth']], function()
{
    // here all of the routes that requires auth to be checked like this
    Route::resource('user','UsersController');
}
另一种方式

function __construct()
{
    $this->middleware('auth');
}
在控制器路由上指定另一种方式

Route::get('profile', [
    'middleware' => 'auth',
    'uses' => 'UserController@showProfile'
]);
见文件


您可以在控制器中使用
auth
中间件

public function __construct()
{
   $this->middleware('auth');
}
检查此处:

您应该使用:

或:

或使用:

或使用:


使用中间件怎么样?我试过这种方法,但对我不起作用(什么也没发生。只需遵循我有50多条路由,包括ajax请求。这不是重写每条路由的解决方案…@PaulBasenko使用它。这是我回答中的第三个选项。至于组路由,我已经使用了它。正如我所说,我需要auth签入控制器的操作,而不是在路由中。@PaulBasenko你在这里重新发明轮子.创建中间件正是为了解决这类问题。如果要构建可维护的应用程序,中间件是正确的选择。我最初的问题是,当用户未登录系统时,在站点上执行操作时出现错误。这发生在浏览器启动时,其中显示缓存信息默认情况下,在页面上显示d。为登录用户显示的站点界面,在他的系统中没有。同时,产生一些操作,我得到一个错误,即用户未经授权。因此,除了路由的中间件外,我决定让auth签入控制器。
Route::get('profile', ['middleware' => 'auth', 'uses' => 'UserController@showProfile']);
Route::get('profile', 'UserController@show')->middleware('auth');
Route::group(['middleware' => ['auth']], function () {
    // Controllers here.
});
public function __construct()
{
    $this->middleware('auth');
}