如何使用Django Rest Framework创buildloginAPI?
我想创build一个loginAPI(或使用现有的一个,如果它已经预先捆绑)使用Djangorest框架。 不过,我完全不知所措。 每当我发送到Djangorest框架“login”的url发送请求,它只是发回可浏览的API模板页面…
我的configuration
urls.py
url(r'^api/v1/', include('rest_framework.urls', namespace='rest_framework'))
settings.py
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', ) }
我想要的是
请求:
POST /api/v1/login username='name' pass='pass'
响应:
200 OK "{username: 'name', 'userId': '54321'}" set-cookie: sessionid="blahblah"
看看django-rest-framework-jwt的api视图。 这是创buildauth令牌而不是cookie会话的实现,但是您的实现将类似。 请参阅views.py和serializers.py 。 您可能可以使用serializers.py
不变,只是调整您的意见,以返回正确的参数,并可能设置会话的cookie(如果已经在身份validation已经执行,不能回想起来)。
如果你想要这样的东西,我做同样的事情,但我使用令牌authentication。
在这里查看他们的令牌页面
这可能不是你想要的,但我这样做的方式是(因为我用它作为移动客户端的restAPI端点)
我可以做我的url localhost:8000/api/users/ -H Authorization : Token
浏览器然后可以使用您在提供的rest框架url创build的常规login页面
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')
并获取“无login”导航的令牌
url(r'^api-token-auth/', 'rest_framework.authtoken.views.obtain_auth_token')
那么如果你打电话,这样你可以通过授权令牌。 当然,这只是我的做法,可能不是最有效的方法,但我的目标是创build一种方法,可以向用户提供浏览器的会话身份validation和通过令牌的移动访问。
然后在您的views.py请确保您添加该视图的身份validation要求。 几乎与会话身份validation部分相同
permission_classes = (permissions.IsAdminUser,)
还包括
authentication_classes = (authentication.TokenAuthentication,)
我希望这可以帮助,但如果没有,祝你好运。
当然,令牌是validation的好方法,但是提问者正在询问会话validation。
请求:
POST /api/v1/login username='username' password='password'
- 将
csrftoken
值csrftoken
X-CSRFToken
标题中 - 即使有人使用
email
作为用户名提交,username
名称参数是必需的电子邮件input(例如username='sample@domain.com'
)
响应:
302 FOUND sessionid="blahblah"
- 如果您未指定
next
值,则会自动redirect到/accounts/profile/
,这可能会产生404错误