#django #django-rest-framework #django-views #django-templates
#django #django-rest-фреймворк #django-просмотры #django-шаблоны
Вопрос:
У меня есть следующее settings.py .У меня есть только аутентификация по токену
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),
}
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
'rest_framework',
'rest_framework.authtoken',
views.py
class UserView(APIView):
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
def get(self,request,*args,**kwargs):
print(request.user)
Когда я пытаюсь получить доступ к определенному URL-адресу, я получаю следующую ошибку
HTTP 401 Unauthorized
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
WWW-Authenticate: Token
{
"detail": "Authentication credentials were not provided."
}
Я попытался удалить IsAuthenticated, тогда это работает, но пользователь является анонимным пользователем.Как мне это исправить? Я хочу получить доступ к текущим данным пользователя, вошедшего в систему. Кроме того, как мне получить к нему доступ на уровне URL-адреса.Например, у меня есть URL-адрес «localhost:8000/api/values/param1 /param2» Как я могу предоставить здесь токен? Я получаю сообщение об ошибке, когда пытаюсь получить доступ к этому URL-адресу на самом деле
Ответ №1:
Поздравляю, ваши конечные точки API теперь защищены! это нормальное поведение. Вам необходимо предоставить токен при попытке доступа к ресурсам. Это с точки зрения интерфейса.
Ознакомьтесь с документацией: https://www.django-rest-framework.org/api-guide/authentication /
Для аутентификации клиентов ключ токена должен быть включен в HTTP-заголовок авторизации. Ключ должен иметь префикс строкового литерала «Token» с пробелом, разделяющим две строки. Например:
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
Комментарии:
1. куда я могу отдать жетон? Я имею в виду, какой файл? views.py или settings.py
2. Я имею в виду, нужно ли мне указывать токен по URL, потому что я хочу получить доступ к зарегистрированному токену пользователя
3. Чтобы быстро протестировать вашу систему аутентификации (например, сгенерировать токен, зарегистрировать нового пользователя, аутентифицировать пользователя), вы можете использовать Postman .
4. да, но как мне получить к нему доступ на уровне url. Например, у меня есть URL-адрес » localhost: 8000/api/values/param1 / param2 » Как я могу дать здесь знак внимания? Я получаю сообщение об ошибке, когда пытаюсь получить доступ по этому URL-адресу на самом деле @Ivan