因此,我正在学习如何使用Laravel&Vue.js创建单页应用程序,并且找到了tutorial。我遵循了所有内容,没有进行任何更改,但是每次登录/注册时,我都会一直保持未定义状态
我已经三倍检查了所有内容。
显示http://127.0.0.1:8080/undefined/api/auth/login的图片- https://imgur.com/LfpiMvS
代码如下:
Auth.js
import bearer from '@websanova/vue-auth/drivers/auth/bearer'
import axios from '@websanova/vue-auth/drivers/http/axios.1.x'
import router from '@websanova/vue-auth/drivers/router/vue-router.2.x'
// Auth base configuration some of this options
// can be override in method calls
const config = {
auth: bearer,
http: axios,
router: router,
tokenDefaultName: 'recipe-lists',
tokenStore: ['localStorage'],
rolesVar: 'role',
registerData: {url: "auth/register", method: 'POST', redirect: '/login'},
loginData: {url: "auth/login", method: 'POST', redirect: '/', fetchUser: true},
logoutData: {url: "auth/logout", method: 'POST', redirect: '/', makeRequest: true},
fetchData: {url: "auth/user", method: 'GET', enabled: true},
refreshData: {url: "auth/refresh", method: 'GET', enabled: true, interval: 30}
}
export default config
api.php
Route::prefix('auth')->group(function () {
Route::post('register', 'Auth\AuthController@register');
Route::post('login', 'Auth\AuthController@login');
Route::get('refresh', 'Auth\AuthController@refresh');
Route::group(['middleware' => 'auth:api'], function(){
Route::get('user', 'Auth\AuthController@user');
Route::post('logout', 'Auth\AuthController@logout');
});
});
login.vue
<script>
export default {
data() {
return {
email: null,
password: null,
has_error: false,
isProcessing: false,
}
},
methods: {
login() {
// Get the redirect object
this.isProcessing = true
var redirect = this.$auth.redirect()
this.$auth.login({
body: {
email: this.email,
password: this.password
},
success: function() {
// Handle Redirection
const redirectTo = redirect ? redirect.from.name : this.$auth.user().role === 2 ? 'admin.dashboard' : 'dashboard'
this.$router.push('/')
},
error: function() {
this.has_error = true
},
rememberMe: true,
fetchUser: true
})
}
}
}
</script>
有人可以向我解释一下这里的情况吧。
谢谢!
答案 0 :(得分:3)
我在URL中的undefined
部分遇到了类似的问题。
原因是我的MIX_APP_URL
Laravel配置文件中没有设置.env
变量。
${process.env.MIX_APP_URL}
的工作方式是Node可以在运行时注入环境变量,在这种情况下为应用程序url。
我们希望MIX_APP_URL
中的.env
的一个原因是,使用您的应用程序的任何开发人员都可以轻松地对其进行设置,而仅修改MIX_APP_URL
变量。
另一个非常重要的原因是,URL 对于本地服务器和生产环境将有所不同-在这种情况下,将其更改为静态URL的解决方案将不起作用,并且容易生产环境中的错误。
需要注意的一点是,在运行NPM watch
任务时,.env
变量的更改不会立即生效,watch
任务必须重新启动< / strong>。
答案 1 :(得分:0)
原来我的错误是来自我的 app.js ,代码是:
abcd
将其更改为:
axios.defaults.baseURL = `${process.env.MIX_APP_URL}/api`
成功了,未定义的东西现在消失了。我不知道为什么第一个不起作用,而是吧。
Reddit用户/ u / mrcat323帮助我在/ r / vuejs中获得了答案。