是否可以在app \ Http \ Controllers文件夹之外使用auth()或其他函数?

时间:2019-08-11 15:50:36

标签: php laravel responsive-filemanager

我想使用响应文件管理器的访问键。 由于用户可以看到访问密钥(example.com/filemanager/dialog.php?akey=usersaccesskeys),因此我希望访问密钥是临时的(仅一次性使用)。但是我想我需要“ auth()”和其他函数,例如“ User :: find($ user_id)”来做到这一点。 无论如何,当我在文件管理器的配置文件中使用auth()或控制器功能时,都会出现错误,“在/path/to/config/config.php中调用未定义的函数auth()”。 我被困住了,我不想这样部署我的网站。 还有其他方法可以确保响应文件管理器安全吗?

我也尝试过在app \ Http \ Controllers \ RfmController.php中使用控制器php文件 其他错误显示“未捕获的错误:类'App \ Http \ Controllers \ Controller'” 这是RfmController扩展的功能。

我正在运行LAMP服务器。 PHP 7.3.7 Laravel 5.8

在我的config.php中

'access_keys' => array(auth()->user()->name),

通过使用controller.php

在我的config.php中

namespace App\Http\Controllers;
require('/path/to/app/Http/Controllers/RfmController.php');
$rfm = new RfmController;
.
.
.
'access_keys' => array(RFMClass::rfmakey()),

在RfmController.php

namespace App\Http\Controllers;
class RfmController extends Controller
{
    public function rfmakey()
    {
        return auth()->user()->id;
    }
{

我希望rfmakey()返回用户名

1 个答案:

答案 0 :(得分:0)

您需要使用中间件。来自official laravel documentation

如果您使用的是控制器,则可以从控制器的构造函数中调用中间件方法,而不是将其直接附加到路由定义中:

public function __construct()
{
    $this->middleware('auth');
}

顺便说一句,我会避免在config.php文件中放置动态值或代码,例如

auth()->user()->name

这不是一个好习惯。

希望此解决方案对您有所帮助!