Как я могу аутентифицировать пользователя в Django-Rest-Framework через приложение Flutter?Я делал это раньше в Postman, и вот как я это сделал:
- Опубликовать запрос (IP: 8000 / get-token /)> Возвращает JSON Web Token
- Получить запрос с помощьюТокен на предъявителя (IP: 8000 / база данных / упражнения /)> Возвращает файл JSON!- Обратите внимание, что если я не использую токен, я ничего не получу взамен!
Как мне повторить это через запрос Flutter http.post?
Вот как явыполнит процесс регистрации (в данном случае не с токеном):
//text-field controllers
TextEditingController usernameController = TextEditingController();
TextEditingController passwordController = TextEditingController();
//post request
postRequest() async {
String _url = "IP:8000/get-token/";
var response = await http.post(
Uri.encodeFull(_url),
headers: { "Accept" : "application/json"},
body: {
"username": "${usernameController.text}",
"password": "${passwordController.text}",
},
encoding: Encoding.getByName("utf-8"),
);
//Name TextField (Simplified Code)
Container(
margin: EdgeInsets.only(bottom: 2, top: 25),
child: TextField(
controller: nameController,
decoration: InputDecoration(
hintText: "Name..."
))
)
//Password TextField (Simplified Code)
Container(
margin: EdgeInsets.only(bottom: 2, top: 25),
child: TextField(
controller: passwordController,
decoration: InputDecoration(
hintText: "Password..."
))
)
//Simplified but you get what I mean
Inkwell(
child: Container()
onTap()
{
postRequest(),
Navigator.push(Into-App)
}
)
Мой вопрос: как мне получить ответ на этот запрос?(если имя пользователя и пароль соответствуют базе данных).
И как мне использовать токен, который я получаю в ответ на запрос в будущем, чтобы получить данные внутри приложения?
Django-Backend:
#urls
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
urlpatterns = [
path('admin/', admin.site.urls),
path('database/', include('PlanThatWorkout.urls')),
path('get-token/', TokenObtainPairView.as_view()),
path('refresh-token/', TokenRefreshView.as_view())
]
#settings
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES' : ('rest_framework.permissions.IsAuthenticated',),
'DEFAULT_AUTHENTICATION_CLASSES' : ('rest_framework_simplejwt.authentication.JWTAuthentication',),
}