#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`
})
}