首页 > 解决方案 > 如何通过从 API 获取数据来登录用户?

问题描述

我正在编写一个 API 视图,其中正在访问 API 以将电子邮件和密码发送到地址并获取响应。所以我想要如果响应为 200 或回复消息为“成功”,然后使用可用的电子邮件和密码数据登录,但我是不能这样做。如何做到这一点?

class ApiLoginView(TemplateView):
    template_name = 'index.html'


    def post(self,request):
        email = request.POST.get('login-email')
        print(email)

        password = request.POST.get('login-password')
        print(password)
        API_KEY = '*********************'
        API_URL = 'http://devstudio.com/rest/storeLogin'
        parameter = {
            'authToken':API_KEY,
            'email':email,
            'password':password,
        }
        r = session.post(url = API_URL, params=parameter)
        return HttpResponse(r)

标签: django

解决方案


如果您使用 djagno 的内置身份验证和用户系统,那么您可以使用类似这样的东西

from django.contrib.auth import authenticate, login
class ApiLoginView(TemplateView):
template_name = 'index.html'


def post(self,request):
    email = request.POST.get('login-email')
    print(email)

    password = request.POST.get('login-password')
    print(password)
    API_KEY = '*********************'
    API_URL = 'http://devstudio.com/rest/storeLogin'
    parameter = {
        'authToken':API_KEY,
        'email':email,
        'password':password,
    }
    r = session.post(url = API_URL, params=parameter)
    if r.status_code==200:
       user = authenticate(request, username=username, password=password)
       if user is not None:
          login(request, user)
          # Redirect to a success page.

       else:
         # Return an 'invalid login' error message.


    return HttpResponse(r)

作为参考,请检查此https://docs.djangoproject.com/en/2.1/topics/auth/default/#topic-authorization 希望这会有所帮助..


推荐阅读