【发布时间】:2017-01-13 19:05:38
【问题描述】:
我使用 Laravel 5.3,但遇到以下问题。
[更新]
我最初的问题是在用户未登录系统时在网站上执行操作时出现错误。
这发生在浏览器启动时,页面上默认显示缓存信息。为登录用户显示的站点界面,在他的系统中没有。同时,产生一些动作,我得到一个用户未授权的错误。
我的所有路由也有组身份验证中间件。当我重新启动站点页面时,中间件被激活并将我重定向到登录页面。主要问题是浏览器显示缓存信息。
所以,除了路由的中间件,我决定在控制器中进行身份验证检查。
[/更新]
我想在每个控制器的操作中检查用户的身份验证。手动检查每个控制器的操作不是解决方案,因为有很多控制器和操作。
所以我决定在全球推广。
由于所有控制器都扩展了主控制器 (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 方法并进行了身份验证,但我也不喜欢这种方式。
有什么解决办法吗?
【问题讨论】:
-
使用中间件怎么样?
-
我试过这种方式,但它对我不起作用(什么都没发生。
标签: php laravel authentication laravel-5