This repository was archived by the owner on Jul 24, 2025. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 374
This repository was archived by the owner on Jul 24, 2025. It is now read-only.
Server receives empty body/data Object #324
Copy link
Copy link
Closed
Description
Hi,
I am using vue-admin for for a webapp. This is shipped with vue-auth and right now I am facing the following problem:
I think I have set up all like described in the guide. When sending the request to my api. The api receives it on the right route with the right method but the req.body is always empty.
My Login.vue
<template>
<div class="content has-text-centered" v-if="$auth.ready()">
<h1 class="is-title is-bold">Login</h1>
<div class="columns is-vcentered">
<div class="column is-6 is-offset-3">
<div class="box">
<form v-on:submit.prevent="login">
<label class="label">Email</label>
<p class="control">
<input v-model="data.body.email" class="input" type="text" placeholder="[email protected]">
</p>
<label class="label">Password</label>
<p class="control">
<input v-model="data.body.password" class="input" type="password" placeholder="password">
</p>
<p class="control">
<label class="checkbox">
<input type="checkbox" v-model="data.rememberMe">
Remember me
</label>
</p>
<div v-show="error" style="color:red; word-wrap:break-word;">{{ (error && error.message) ? error.message : error }}</div>
<hr>
<p class="control">
<button type="submit" class="button is-primary">Login</button>
<button class="button is-default">Cancel</button>
</p>
</form>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data () {
return {
data: {
body: {
email: null,
password: null
},
rememberMe: false
},
error: null
}
},
mounted () {
if (this.$auth.redirect()) {
console.log('Redirect from: ' + this.$auth.redirect().from.name)
}
// Can set query parameter here for auth redirect or just do it silently in login redirect.
},
methods: {
login () {
var redirect = this.$auth.redirect()
this.$auth.login({
headers: {
'Content-Type': 'application/json'
},
data: this.data.body,
rememberMe: this.data.rememberMe,
redirect: {name: redirect ? redirect.from.name : 'Home'},
success (res) {
console.log('Auth Success')
// console.log('Token: ' + this.$auth.token())
// console.log(res)
},
error (err) {
if (err.response) {
// The request was made, but the server responded with a status code
// that falls out of the range of 2xx
// console.log(err.response.status)
// console.log(err.response.data)
// console.log(err.response.headers)
this.error = err.response.data
} else {
// Something happened in setting up the request that triggered an Error
console.log('Error', err.message)
}
console.log(err.config)
}
})
}
}
// filters: {
// json: function (value) {
// console.log(value)
// return value
// }
// }
}
</script>
<style lang="scss" scoped>
[...]
</style>
My app.js
import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
import VueAuth from '@websanova/vue-auth'
import NProgress from 'vue-nprogress'
import { sync } from 'vuex-router-sync'
import App from './App.vue'
import router from './router'
import store from './store'
import * as filters from './filters'
import { TOGGLE_SIDEBAR } from 'vuex-store/mutation-types'
Vue.router = router
Vue.use(VueAxios, axios)
Vue.axios.defaults.baseURL = 'http://localhost:9090/api/v1'
Vue.use(VueAuth, {
auth: {
request: function (req, token) {
this.options.http._setHeaders.call(this, req, {Authorization: 'Bearer ' + token})
},
response: function (res) {
// Get Token from response body
return res.data
}
},
http: require('@websanova/vue-auth/drivers/http/axios.1.x.js'),
router: require('@websanova/vue-auth/drivers/router/vue-router.2.x.js'),
loginData: { url: '/auth', fetchUser: false },
refreshData: { enabled: false }
})
[...]
When I am sending the same request via postman all is working fine.
When trying to login via the interface , the console logs my the following object:
{
transformRequest: {},
transformResponse: {},
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json'
},
baseURL: 'http://localhost:9090/api/v1',
method: 'options',
url: 'http://localhost:9090/api/v1/auth',
redirect: {
'0': '/',
name: 'Home'
},
fetchUser: false,
data: '{"email":"[email protected]","password":"secret"}',
rememberMe: false,
query: {},
showProgressBar: true
}
Edit:
When sending the same body object as param, the api receives it as query, but this approach I would not like.
Metadata
Metadata
Assignees
Labels
No labels