Я использую VueSession в своем проекте. Я создал компонент входа в систему и передаю данные своему бэкэнду (Django, возвращает токен JWT). Здесь моя проблема. Мой логин работает нормально, он возвращает JWT, но когда я хочу получить данные с других конечных точек, я получаю ошибку 401 (Authentication credentials were not provided
). Когда я использую curl в моем терминале, все работает нормально.
curl -X POST -d "username=test&password=test" http://localhost:8000/api/token/auth/
возвращает токен
curl -H "Authorization: JWT <my_token>" http://localhost:8000/protected-url/
и возвращает данные с сайта
Вот то, что я настроил в своем проекте Vue.
Login.vue
<script>
import Vue from 'vue'
export default {
name: 'Login',
data () {
return {
username: '',
password: ''
}
},
methods: {
login: function (username, password) {
let user_obj = {
"username": username,
"password": password
}
this.$http.post('http://192.168.1.151:8000/api/token/auth', user_obj)
.then((response) => {
console.log(response.data)
this.$session.start()
this.$session.set('jwt', response.data.token)
Vue.http.headers.common['Authorization'] = 'JWT' + response.data.token
// this.$router.push('/')
})
.catch((error_data) => {
console.log(error_data)
})
}
}
}
</script>
HereIWantUserGETRequest.vue
<script>
export default {
data() {
return {
msg: "Welcome",
my_list: []
}
},
beforeCreate() {
// IF SESSION DOESN'T EXIST
if (!this.$session.exists()) {
this.$router.push('/account/login')
}
},
mounted() {
this.getData()
},
methods: {
getData: function() {
this.$http.get('http://192.168.1.151:8000/api/user/data')
.then((response) => {
console.log(response.data)
this.my_list = response.data
})
.catch((error_data) => {
console.log(error_data)
})
}
}
}
</script>
И, конечно, я настроил VueSession и VueResource в main.js
import VueSession from 'vue-session'
import VueResource from 'vue-resource'
Vue.use(VueResource)
Vue.use(VueSession)