我使用Python / Django编写后端,使用Django-Rest-Framework编写API,我还使用rest_auth
,allauth
,查看我的settings.py
:
INSTALLED_APPS = [
...
'corsheaders',
'rest_framework',
'rest_framework.authtoken',
'rest_framework_docs', # API docs
'rest_auth',
'allauth',
'allauth.account',
但是当前端访问API时,它必须在中添加Authorization
请求标头,否则无法访问成功:
举个例子:
var that = this
// login
that.$http.post(Urls.users.login(), params).then((response) => {
that.$Cookies.set('token', response.data.key);
}).catch((response) => { // if the header do not have `Authorization`, there will go to there directly, and pay attention: the response is undefined.
}
)
答案 0 :(得分:1)
您将'rest_framework.authtoken'
添加到INSTALLED_APPS
并设置
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
)
}
在settings.py中。
当您使用不安全的方法(例如DjangoRestFramework
)询问服务器时,post\patch\delete
会检查您的身份。login
方法由post
方法处理,该方法会询问身份。但是您获得{在token
之后{1}}。
处理你问题的两种方法,一个是设置:
login
不推荐。第二种方法是设置'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.AllowAny',
),
方法的权限,如:
login