我如何使用tastypie登录django

我如何使用tastypie登录django,第1张

我如何使用tastypie登录django

您的方法将尝试使用您要进行身份验证的用户名创建一个新用户。正如您所注意到的,这将在数据库层冒泡,该用户已经存在。

您想要创建一个

UserResource
,在其上添加一个方法,用户可以将其发布到并使用通过用户名/密码传递的数据登录。

from django.contrib.auth.models import Userfrom django.contrib.auth import authenticate, login, logoutfrom tastypie.http import HttpUnauthorized, HttpForbiddenfrom django.conf.urls import urlfrom tastypie.utils import trailing_slashclass UserResource(ModelResource):    class meta:        queryset = User.objects.all()        fields = ['first_name', 'last_name', 'email']        allowed_methods = ['get', 'post']        resource_name = 'user'    def override_urls(self):        return [ url(r"^(?P<resource_name>%s)/login%s$" %     (self._meta.resource_name, trailing_slash()),     self.wrap_view('login'), name="api_login"), url(r'^(?P<resource_name>%s)/logout%s$' %     (self._meta.resource_name, trailing_slash()),     self.wrap_view('logout'), name='api_logout'),        ]    def login(self, request, **kwargs):        self.method_check(request, allowed=['post'])        data = self.deserialize(request, request.raw_post_data, format=request.meta.get('CONTENT_TYPE', 'application/json'))        username = data.get('username', '')        password = data.get('password', '')        user = authenticate(username=username, password=password)        if user: if user.is_active:     login(request, user)     return self.create_response(request, {         'success': True     }) else:     return self.create_response(request, {         'success': False,         'reason': 'disabled',         }, HttpForbidden )        else: return self.create_response(request, {     'success': False,     'reason': 'incorrect',     }, HttpUnauthorized )    def logout(self, request, **kwargs):        self.method_check(request, allowed=['get'])        if request.user and request.user.is_authenticated(): logout(request) return self.create_response(request, { 'success': True })        else: return self.create_response(request, { 'success': False }, HttpUnauthorized)

现在,您可以将POST发送到

http://hostname/api/user/login
data了
{ 'username' : 'me','password' : 'l33t' }



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5639456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存