整合Django后端与Vue.js前端,实现用户认证和应用状态管理。
确保Django后端具备用户认证和Token认证系统。
REST_FRAMEWORK
在settings.py
中添加Token认证。REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
使用Vue.js创建前端应用。
// Vue Router配置
const router = new VueRouter({
routes: [
{ path: '/login', component: Login },
{ path: '/home', component: Home, meta: { requiresAuth: true } },
// 其他路由...
],
});
在Vue.js中使用Vuex管理应用状态。
npm install vuex@next --save
// store/index.js
import { createStore } from 'vuex';
export default createStore({
state: {
isAuthenticated: false,
userData: null,
},
mutations: {
setAuthState(state, { isAuthenticated, userData }) {
state.isAuthenticated = isAuthenticated;
state.userData = userData;
},
},
actions: {
login({ commit }, credentials) {
// 实现登录逻辑
},
logout({ commit }) {
// 实现登出逻辑
},
},
});
实现前端登录和登出逻辑,与Django后端交互。
// Vuex actions中实现登录
login({ commit }, credentials) {
fetch('/api/auth/login/', {
method: 'POST',
body: JSON.stringify(credentials),
headers: { 'Content-Type': 'application/json' },
})
.then(response => response.json())
.then(data => {
commit('setAuthState', { isAuthenticated: true, userData: data.user });
localStorage.setItem('authToken', data.token);
});
},
// Vue Router导航守卫
router.beforeEach((to, from, next) => {
const requiresAuth = to.matched.some(route => route.meta.requiresAuth);
const isAuthenticated = store.state.isAuthenticated;
if (requiresAuth && !isAuthenticated) {
next('/login');
} else {
next();
}
});
通过今天的学习,你应该能够实现一个基本的用户认证流程,并通过Vuex管理用户认证状态。明天,我们将继续深入Vue.js和Vuex,学习如何实现更复杂的数据交互和状态管理。