2013-05-07 4 views
6

Django 1.5アプリでユーザーの許可を割り当てました。私はDjango:user.has_permは常にtrueで、ユーザはスーパーユーザではありません。どうして?

In [1]: user.get_all_permissions() 
Out[1]: set([u'profile.change_profile']) 

で、すべてのユーザー権限を一覧表示するとき 私は(正しいと望んでいた)1社の許可を見ることができます。ユーザーはスーパーユーザーではなく、管理者でもありません。私はuser.has_permを使用しようと

In [2]: user.is_superuser 
Out[2]: False 

しかし、私は常に提出許可要求のためのリターンとしてTrueを取得します。

私はユーザがスーパーユーザ/管理者であると予想します。すべての要求に対してスーパーユーザー以外のユーザーが常にTrueになるのはなぜですか?私は設定を忘れましたか?

+1

カスタム 'User'モデルまたは認証バックエンドを使用していますか?たぶんここの文書を読んでください:https://docs.djangoproject.com/en/dev/topics/auth/customizing/#handling-authorization-in-custom-backends –

答えて

4

Thane Brimhallのコメントで述べたように、認証バックエンドを確認する必要があります。 あなたはdjango sourcesにUserモデルのhas_perm方法でこのコメントを見つけることができます:ユーザーが指定した権限を持っている

trueを返します。このメソッド は利用可能なすべての認証バックエンドを照会しますが、 バックエンドがTrueを返すとすぐに戻ります。したがって、単一の 認証バックエンドから許可を受けているユーザは、一般的に許可を持っているものとみなされます。

また、ユーザーグループを確認することも忘れないでください。デフォルトのバックエンドはユーザーグループのアクセス許可をチェックし、接続されている可能性があります。

関連する問題