【问题标题】:Django: Applying mutilple access control decorators to a viewDjango:将多个访问控制装饰器应用于视图
【发布时间】:2009-08-27 00:10:33
【问题描述】:

我正在尝试使用三种不同的身份验证机制公开单个 API 调用:django 的 login_required 、HTTP 基本身份验证和 OAuth。我为这三个人都有装饰器,但不知道如何让他们都顺利相处。

如果任何装饰器/身份验证机制对用户的请求有效 - 基本上是 OR,则所需的逻辑是允许访问视图。但是,如果我简单地包括所有三个装饰器,那么它们都希望在让请求通过之前得到满足 - 一个 AND。

有什么好的方法来解决这个问题?

【问题讨论】:

    标签: django authentication


    【解决方案1】:

    我不确定你能做到。假设用户未登录:如果使用login_required,服务器将重定向到登录表单,而使用基本身份验证,服务器将返回带有WWW-Authenticate 响应标头的401 错误页面。您希望发生其中的哪一个?我不明白怎么可能两者兼而有之。

    【讨论】:

    • 对于我的 API,我允许对会话用户进行 HTTP 基本身份验证和测试,但我不需要使用登录。失败时我不会重定向到登录 url,而是返回 401 错误。这允许登录用户测试 API,但如果基本身份验证或 oauth 失败,则不会导致非浏览器访问冲突。
    猜你喜欢
    • 1970-01-01
    • 2023-02-07
    • 2016-09-24
    • 1970-01-01
    • 2014-06-01
    • 2015-02-01
    • 2012-12-24
    • 1970-01-01
    • 2015-08-14
    相关资源
    最近更新 更多