Axios OAuth2 FastApi

#javascript #python #oauth-2.0 #axios #fastapi

Вопрос:

Я действительно не могу понять, как данные формы работают с axios. Как я могу передавать переменные в axios?

Вот мой код:

   methods: {
login() {
  const username = this.username, password = this.password;

  axios.post(process.env.VUE_APP_LOGIN, {"username": username, "password": password})
  .then(response => {
    const {token, token_type} = response.data;
    console.log(token, token_type)
    // ['authorization'] = `Bearer ${token}`
    this.$store.commit('auth/SET_TOKEN', token)
  })

  },
 

и внутренний метод:

 @router.post("/login", response_model=Token)
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
    user = authenticate_user(fake_users_db, form_data.username, form_data.password)
    if not user:
        raise HTTPException(status_code=400, detail="Incorrect username or password")
    access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
    access_token = create_access_token(
        data={"sub": user.username, "scopes": form_data.scopes},
        expires_delta=access_token_expires,
    )
    return {"access_token": access_token, "token_type": "bearer"}
 

Как я могу передать переменные в этот axios, чтобы получить токен?

Комментарии:

1. Трудно сказать, о чем вы на самом деле просите. Вы используете переменные в своем вызове axios — хотя и через this . Вы спрашиваете, как вы можете извлечь возвращенный токен (.. что, похоже, вы уже делаете), или вы спрашиваете, как вы можете включить этот токен в будущие запросы после того, как он будет возвращен с вашей конечной точки аутентификации?

2. Я спрашиваю, я думаю, что мне нужно сделать pydantic модель имени пользователя и пароля, а затем я могу получить ее от axios по данным?

Ответ №1:

Хорошо, я нахожу способ, как вы можете ввести имя пользователя и пароль с помощью form_data JS может использовать тип formdata, который вам нужен для создания списка form_Data, подобного этому

   const payload = new FormData()
 

затем добавьте туда то, что вам нужно

 payload.append(`name`, this.`variable`)
 

и затем

 axios.post(`link`, payload) {
   .then(response => {
   `get token`
})
}