【问题标题】:Laravel 5.5 api , how to prevent thisLaravel 5.5 api,如何防止这种情况
【发布时间】:2018-10-16 08:13:19
【问题描述】:

我用 laravel 5.5 开发了一些 api。一切正常。

但是假设用户直接在浏览器中输入一个“api”url(例如:api/books),那么他会收到一个错误:

InvalidArgumentException 路由 [登录] 未定义。

如何防止这种情况? 我试图在 routes/web.php 文件中添加一些路由,但没有成功。

任何建议都会有所帮助。

或者我应该什么都不做(很少有用户会这样做)?

谢谢

【问题讨论】:

  • API url 已打开。所以,一开始没什么可隐藏的,任何人都可以直接访问它。需要经过身份验证的用户的 API 应在标头或 url 参数中包含令牌。因此,您可以检查访问 url 是否包含令牌。如果不是,那么您可以抛出错误。
  • 嗨,索文。我宁愿寻找一种解决方案,例如“如果在文件 routes/web.php 中找不到路由,则重定向到信息页面”。这就是我想要做的。你所说的解决方案在我看来似乎更复杂。没有?
  • 对我来说并不复杂。无论如何,您无法在 web.php 之类的文件中检查路由列表。您可以为所有 api 路由添加前缀并检查您的路由是否包含该前缀。但同样,您也在限制来自其他设备的呼叫。因为直接从浏览器输入或从手机调用是一回事。

标签: laravel-5


【解决方案1】:

在这里找到答案:

Laravel 5.5 change unauthenticated login redirect url

我只在“app/Exceptions/Handler.php”文件中这样做,我像这样修改了“render”函数:

public function render($request, Exception $exception)
{
    // return parent::render($request, $exception);

    // add dom
    return redirect('/');

    // or redirection with a json
    /*
    return response()->json(
        [
            'errors' => [
                'status' => 401,
                'message' => 'Unauthenticated',
            ]
        ], 401
    );
    */
}

而且效果很好。由于“laravel”部分仅用作api的后端,就足够了。

Dom

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多