0

私はdjangoを使用していますが、権限の非常に複雑なマトリックスがあります。次のような10セットの権限グループがあるとします

Permissions = [basic, medium, advanced , very advanced , admin , superadmin , public , etc]

もう1つは、10個のモデルがあり、すべてのモデルがview, editグループごとに異なる権限を持っているため、全体として、ルールはさまざまな種類のマリックスに10 X 10なります。

私はすべてのコードを許可なしで配置しました。権限チェックのために、すべての場所で現在のコードに触れたくありません。

次の場所で許可チェックが必要です

アクセス許可は、ログオンしているユーザーのアクセス許可グループに基づきます。

  1. 権限に基づいて編集、挿入、削除ボタンを表示するテンプレート
  2. 表示する前のビューで、ユーザーが表示/更新/削除できるかどうかのチェックが行われます

システムのビューを表示する前に、ビューにdelete,update,insertコードを記述せずに権限マトリックスから自動的にチェックする方法はありますか?

その後、必要に応じて書き込むことができるテンプレートのみが残ります

4

2 に答える 2

1

テンプレート内でDjangoによって提供される権限変数を探しているだけだと思います

https://docs.djangoproject.com/en/1.5/topics/auth/default/#permissions

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

ミドルウェアの例:

from django import http

class PermissionMiddleware(object):
    def process_view(self, request, view_func, view_args, view_kwargs):
        # you should somehow derive this from the view function and/or view args/kwargs
        your_object = SomeThing.objects.get(...)

        if not request.user.has_perm('name_of_your_object.permission'):
            return http.HttpResponseForbidden()
于 2013-04-14T00:34:11.400 に答える