我已经使用djangorestframework创建了一个示例api,它运行良好,我可以使用可浏览的api而没有任何问题。然后我添加了官方网站上提到的outh2身份验证,也运行良好。我可以使用以下来获取访问令牌。
curl -X POST -d "client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD" http://localhost:8000/oauth2/access_token/
我也可以使用curl通过使用访问令牌浏览我的api。
但是在使用可浏览的api时我无法浏览我的api,因为可浏览的api既没有得到任何访问令牌也没有使用任何访问令牌。我想我需要登录这个。所以我无法在哪里定制当前登录我必须使用oauth。
答案 0 :(得分:6)
Web浏览器通常不允许您设置自定义标头,因此您无法提供OAuth令牌。
通常,如果要使用可浏览的API,则需要允许基于会话(即基于cookie的身份验证)。
您可以允许这两种身份验证方法,如果需要,可能会限制会话身份验证以进行开发。
我希望有所帮助。
答案 1 :(得分:3)
我正在使用Django REST Framework,当我安装Django OAuth Toolkit与它一起工作时遇到了同样的问题。要解决此问题,请打开settings.py并确保将REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
'rest_framework.permissions.IsAuthenticated',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'oauth2_provider.ext.rest_framework.OAuth2Authentication',
'rest_framework.authentication.SessionAuthentication',
],
}
添加到“REST_FRAMEWORK”下的“DEFAULT_AUTHENTICATION_CLASSES”条目中。它应该看起来像......
LinkCollection collection = GetLinks(workItemStore, workItemId);
var query = from link in collection.Cast<WorkItemLinkCollection>()
let workItemLink = link.Cast<WorkItemLink>()
where workItemLink.LinkTypeEnd.LinkType.ReferenceName.ToLower() != "system.linktypes.dependency"
select link;
有了这个设置,您应该能够查看可浏览的API,甚至可以通过使用Django的会话身份验证登录来执行POST请求。