【问题标题】:How to validate the password django rest如何验证密码 django rest
【发布时间】:2018-09-17 03:38:52
【问题描述】:

我正在尝试制作一个 rest 应用程序来与我的 android 应用程序通信,但它阻止了我验证密码。

我默认使用 django 的 User 模型,我想尝试让服务器验证密码

我找到了一些其他有趣的答案,但事实是 django 不是我的强项(我的专长是 android),他们没有很好地解释如何在我看来实现它们

restapp/views.py

class postRegister(APIView):

    def post(self,request):
        data = JSONParser().parse(request)
        cencripM=CriptoMovil(KEY_ENC_M)
        data['username'] = cencripM.decrypt(data['username'])
        data['email'] = cencripM.decrypt(data['email'])
        data['password'] = cencripM.decrypt(data['password'])
        serializer = RegistSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return Response({"message":"save","state":"1"})
        return Response({"message":serializer.errors,"state":"2"})

也许它对我找到的一些文章有所帮助,但我不明白如何在视图中实现它们(我再说一遍我的专业是android)

many options but I did not know how to implement

interesting but I did not understand how to implement the view

【问题讨论】:

  • 如果你不是 Django 专家,你可以试试 Flask,它更容易学习。
  • @NimishBansal 没有朋友是一个团队项目,对我已经做过的所有正常的事情都有好处,我只会想念这个
  • 贴出的代码,是你的尝试还是你发现的?
  • @JohanL 没有朋友,这是我通常处理从 android 收到的数据的方式,但如果我做了几次尝试,最接近的人给了我通过的错误响应,但只在错误日志 xD 和我永远无法返回那个

标签: python django django-rest-framework


【解决方案1】:

一开始您不需要编写客户序列化程序进行验证,而是可以按照令牌基础身份验证在 android 中进行验证,如下所示:

urls.py

from rest_framework.authtoken.views import ObtainAuthToken

urlpatterns +=[
    url(r'^api-token-auth/', ObtainAuthToken.as_view(), name='get_auth_token')
]

现在您可以在/api-token-auth/ 发布用户名和密码,如果有效,您将获得一个令牌作为响应,响应状态将为200 OK

如果您需要自定义响应,那么您需要覆盖 post 方法 ObtainAuthToken如下:

class CustomAuthentication(ObtainAuthToken): 
    def post(self, request, *args, **kwargs):
    serializer = self.serializer_class(data=request.data, context={'request': request})  # this will use DRF's AuthTokenSerializer and pass your request to it
    serializer.is_valid(raise_exception=True)  # validate serializer
    user = serializer.validated_data['user']  # you will get user instance if it is valid
    token, created = Token.objects.get_or_create(user=user)  # gives you token for user
    response_data = {'token': token.key}  #  create dict with token key
    # you can add any other JSON serializable details you want to add in this dict like username or related role/email
    return Response(response_data)

现在在 urls.py 而不是使用 ObtainAuthToken.as_view() 你需要使用 CustomAuthentication.as_view()

有关其他设置详细信息,请阅读 this 线程

【讨论】:

    猜你喜欢
    • 2019-04-14
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2019-07-02
    • 2020-12-08
    相关资源
    最近更新 更多