【问题标题】:how can i remove token from specific Api route in laravel如何从 laravel 中的特定 Api 路由中删除令牌
【发布时间】:2020-09-27 03:23:30
【问题描述】:

我在我的项目中使用 JWT 令牌,并且我有一个 Api 路由,我想删除从用户发送的令牌。 我搜索了很多,很多人说将我的路线放在 $except 数组中的 VerifyCsrfToken 类中,但它不起作用。 我想要这个解决方案,因为如果用户使用令牌发送请求,返回的结果与没有令牌返回的结果不同。

///已编辑

我有一个没有中间件和守卫的路线,在产品模型中我写了一个影响 is_active 列的全局范围。

public function apply(Builder $builder, Model $model)
    {
        if (Auth::guard('manager')->check()) {

            return $builder;
        }


        if (Auth::guard('customer')->check()) {

            return $builder->where('is_active', '=',true);
        }

        return $builder->where('is_active', '=',true);
    }

如果经理对产品使用此路线,则所有产品均退回。 我希望用户的角色对输出没有影响。 换句话说,我想从一些 api 路由中删除令牌

【问题讨论】:

    标签: api jwt token middleware laravel-6


    【解决方案1】:

    VerifyCsrToken 用于 CSRF,与 JWT 令牌不同。

    在这种情况下,您有两种不同的解决方案:

    1. 当您的用户发送 JWT 令牌时,表示您的用户已通过身份验证,您可以获取用户的对象并发送正确的响应。

    2. 您可以制作 2 个不同的控制器和两个路由,其中​​一个用于不带令牌,另一个用于带令牌,并根据用户请求做出适当的响应。

    【讨论】:

    • 我用额外的细节编辑了我的帖子。我有很多控制器,我想删除中间件中的令牌,以便为经理和客户提供相同的结果
    【解决方案2】:

    我不确定我是否完全理解您的问题。

    但是难道不能仅仅添加一层中间件并在那里进行过滤吗? 因此,您可以检查用户是否有令牌并做出相应的反应(例如在特定路线上转发用户)。 如果有帮助,您可以找到一些 middleware related videos here 来解释它的工作原理。

    【讨论】:

    • 我用额外的细节编辑了我的帖子。我有很多控制器,我想删除中间件中的令牌,以便为经理和客户提供相同的结果
    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 2020-04-16
    • 2017-06-12
    • 2018-04-27
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    相关资源
    最近更新 更多