【问题标题】:How to check user's permissions on page?如何检查用户在页面上的权限?
【发布时间】:2012-11-17 11:27:12
【问题描述】:

我需要允许用户根据他的权限查看页面的某些部分。

我在这里看到了一些答案,例如使用 @user_passes_test ( Django - user permissions to certain views? ) 并检查模板 ( Should I use Django permissions checks in the template AND the view? )。

在后一个 @e-satis 的回答中指出,对于我的情况,我应该在模板中使用检查。

我的问题是:我该怎么做?最好的方法(性能和安全性)是什么?

为了说明我的需要,我想到了 Facebook。在 Facebook 中,您允许某些用户查看您的个人资料页面的某些部分或全部。这正是我需要实现的行为。

我很欣赏你的想法。

谢谢。

【问题讨论】:

    标签: python django


    【解决方案1】:

    根据您的示例,我假设您指的是 Django 包上下文中的权限,而不是身份验证检查 (is_authenticated())。这实际上非常简单,并且在 e-satis' 给出的答案中给出了完整的答案 here

    edit似乎给出了更好的答案。

    【讨论】:

    • 是的,这不是检查用户是否经过身份验证,而是验证他是否有权查看该特定块/数据/信息。谢谢。
    【解决方案2】:

    它在 django 中 docs

    基本上

    {% if perms.foo %}
        <p>You have permission to do something in the foo app.</p>
    {% else %}
        <p>You don't have permission to do anything in the foo app.</p>
    {% endif %}
    

    【讨论】:

    • 我检查了那个链接。但我实际上并没有检查为该特定应用设置的权限。在我的 Facebook 示例中,我需要检查保存在我的数据库中的自定义权限。这种方法有可能吗?感谢您的回答。
    • 抱歉不确定您的意思 - 权限查找应该适用于任何应用程序,而不仅仅是“特定应用程序”。是的,通过这种方法,您可以根据用户的权限完全显示/隐藏页面的某些部分——我链接到的 django 文档非常清楚地显示了这一点。
    • 好的,我将如何使用该方法添加权限?当我看到该链接时,我认为它仅适用于应用范围(系统权限)。谢谢。
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2016-11-02
    • 2018-02-14
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多