【问题标题】:Is there a way to use auth() or other function outside app\Http\Controllers folder?有没有办法在 app\Http\Controllers 文件夹之外使用 auth() 或其他功能?
【发布时间】:2019-12-18 10:59:48
【问题描述】:

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

我也尝试过在 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() 会返回用户名

【问题讨论】:

    标签: php laravel responsive-filemanager


    【解决方案1】:

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

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

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

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

    auth()->user()->name
    

    这不是一个好习惯。

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

    【讨论】:

    • 谢谢你的回答,我明白了。如果我在 dialog.php 中使用会话值可以吗?我想不出别的办法。
    猜你喜欢
    • 2021-07-06
    • 1970-01-01
    • 2019-12-30
    • 2023-03-17
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多