0

django-tastypie を使用して IOS アプリを作成しています。ユーザーのデフォルトの権限は、何かを「取得」することだけです。ただし、何かを投稿するための「追加」権限をユーザーに付与することはできます。Tastypie の API を設計するにはどうすればよいですか? django-tastypi を使用してユーザーにアクセス許可を付与する方法は?

4

1 に答える 1

0

最初に、以前にtastypieを使用したときに私をつまずかせた認証と承認の間のニュアンスを指摘したいと思います。

  • 認証とは、「あなたが本人であることを私に証明する」ことを意味します。つまり、何らかの形式のパスワードログインまたはAPIキーです。
  • 承認とは、「あなたが誰であるかがわかったので、あなたが持っている特権の種類を確認させてください。つまり、あなたが属しているユーザーグループや、ユーザーアカウントに付与されている特定の権限などを確認させてください。

さて、それを念頭に置いて、まだ読んでいない場合は、ここで非常に簡潔な例を見てください。

たとえば、これは、ユーザーが自分のユーザー情報にのみアクセスできるように制限する方法です。

# REST endpoint for authenticating user accounts
class UserResource(ModelResource):

    class Meta:
        queryset = User.objects.all()
        resource_name = 'auth/user'
        authentication = BasicAuthentication()
        authorization = DjangoAuthorization()

    def apply_authorization_limits(self, request, object_list):
        return object_list.filter(username=request.user)

次に、ビューを操作しているときにユーザーを認証する方法のスニペットを示します。

# first check that the user is allowed to post
username = form.cleaned_data['username']
password = form.cleaned_data['password'] # @todo: remove this for production
user = authenticate(username=username, password=password)
if user is None:
    raise Http404('Error: new_frame: invalid username / password')
if not user.is_active:
    raise Http404('Error: new_frame: your account is inactive')
# username / password is correct + user is active, proceed with posting
于 2012-11-20T15:49:56.143 に答える