vue-admin-template登录功能前后端交互流程及编码

1.vue-admin-template简介

官网https://panjiachen.github.io/vue-element-admin-site/zh/

vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。相信不管你的需求是什么,本项目都能帮助到你。

 总的来说,是一个已经很完善得前端模板框架,直接拿来可以进行开发,只需要更改其中的小部分代码,即可实现前后端交互。并且vue已经整合了axios,babel等组件

2.vue-admin-template目录结构

前端页面环境使用的框架模板,主要基于两种技术实现的对vue和emui进行的封装

挑重点的说

1.前端框架入口
  config中的  index.html
 下面的   main.js
3.框架中build目录
    存放项目构建的脚本文件,(不需要更改变动)
4.框架中config目录
    index.js
        一些想主机,端口号等基本配置
        设置useEslint: false,//关掉代码检查
    dev.env.js
        如果是开发环境就执行这个js,因为启动的时候是npm run dev 所以是开发环境。
        到后期修改里面的后端接口地址。 BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
        https://easy-mock.com这个地址经常不能访问,所以后期要改为本地(临时),再后来要添加权限框架spring secutiry
    prod.env.js
        如果是生产环境执行这个js
5.框架中src目录(主要写方法,写路由,写页面)
    (改)api---定义调用的方法
    assets----存放静态资源
    components----组件
    icons----矢量图标
    (改)router----vue路由(菜单栏)(页面中调用)
    utils----公共的工具
    (改) views----写页面

3.登录功能交互流程及编码

1.首先打开打开config中dev.env.js

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  // BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
   BASE_API: '"http://localhost:8001"',//后端接口
})

如图,将BASE_API改为自己项目的后端接口地址,

2.进行登录调用两个方法,login登录操作方法,和info登录之后获取用户信息的方法,所以,创建接口的两个方法实现登录。

这两个方法在src-api的login.jd时登录接口

export function login(username, password) {
  return request({
    url: '/eduservice/user/login',
    method: 'post',
    data: {
      username,
      password
    }
  })
}

这个只写了login一个info(显示用户信息没写)

打开store->module中的user.js

import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
  Login({ commit }, userInfo) {
      const username = userInfo.username.trim()
      return new Promise((resolve, reject) => {
        login(username, userInfo.password).then(response => {
          const data = response.data
          setToken(data.token)
          commit('SET_TOKEN', data.token)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },

从store->module中的user.js中,可以看出来,这个Login方法通过引用api中login.js中的login方法,将后端传过来的数据封装到token中

所以在后端controller中创建login方法与前面对应

@RestController
@RequestMapping("/eduservice/user")
@CrossOrigin//解决跨域问题
public class EduLoginController {
    //login
    @PostMapping("login")
    public UnResult login(){
        return UnResult.ok().data("token","admin");
    }
}

 

返回的同样是token。

再根据后端写的方法,修改前端中src-api的login.jd时登录接口,url和method请求方式要和后端对应

至此登录功能完成,可以登录但是没有连接数据库,登录条件。目前任意登录

重启前后端测试,测试的时候应注意下面跨域问题

测试,报错 No 'Access-Control-Allow-Origin
    Access to XMLHttpRequest at 'http://localhost:8001/eduservice/user/login' from origin 
    'http://localhost:9528' has been blocked by CORS policy: 
    Response to preflight request doesn't pass access control check: 
    No 'Access-Control-Allow-Origin' header is present on the requested resource.

    跨域问题: 
        No 'Access-Control-Allow-Origin,也就是通过一个地址去访问另一个地址,这个过程中如果访问协议,IP地址,端口号任何一个不一样,则不能访问
    本项目中:
        前端是'http://localhost:9528
        后端是'http://localhost:8001
        访问协议和IP地址都相同但是端口号不同,则存在跨域问题!!!
    跨域问题解决:
        (1)在后端接口controller添加注解(常用)
            @CrossOrigin//解决跨域问题
        (2)使用网关gateway

 

 

### Vue-admin-template 实现登录功能 #### 安装与启动项目 为了实现登录功能,首先需要确保 `vue-admin-template` 已经正确安装并可以正常运行。通过命令行工具执行以下操作: ```bash cnpm install npm run dev ``` 这会下载所有必要的依赖项并将开发服务器启动起来[^2]。 #### 配置登录接口 对于登录功能而言,通常涉及到前后端交互。前端发送用户名和密码到后端服务,后者验证凭证并向客户端返回一个令牌(token)。此过程可能涉及权限验证机制,例如只有特定角色的用户才能访问某些资源。具体来说,在 `vue-admin-template` 中存在这样的逻辑:当尝试调用某个受保护的操作时(比如给学生账户充值),如果请求未携带有效的认证信息,则会被拒绝;而成功的管理员(`admin`)身份验证之后才允许进一步处理业务逻辑[^3]。 #### 编写登录页面组件 创建一个新的Vue单文件组件用于表示登录界面。下面是一个简化版本的例子,它展示了如何收集用户的输入并通过HTTP POST方法提交至服务器进行校验。 ```html <template> <div class="login-container"> <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> <el-form-item label="Username" prop="username"> <el-input v-model="ruleForm.username"></el-input> </el-form-item> <el-form-item label="Password" prop="password"> <el-input type="password" v-model="ruleForm.password" autocomplete="off"></el-input> </el-form-item> <el-button @click="submitForm('ruleForm')">Login</el-button> </el-form> </div> </template> <script> export default { data() { return { ruleForm: { username: '', password: '' }, rules: { username: [ { required: true, message: 'Please input Username', trigger: 'blur' } ], password: [ { required: true, message: 'Please input Password', trigger: 'change' } ] } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('submit!'); // Here you should send the login request to your backend API. } else { console.log('error submit!!'); return false; } }); } } } </script> ``` 上述代码片段定义了一个表单,其中包含了两个必填字段——用户名 (`username`) 和 密码 (`password`) 。一旦点击 "Login" 按钮就会触发 `submitForm()` 方法来进行数据有效性检查以及后续的实际登录动作模拟[^4]。 请注意实际应用中应当替换掉 `"alert('submit!');"` 这一部分为真实的API调用来完成真正的登录流程,并妥善保存从服务器接收到的身份验证令牌以便于后续请求授权使用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值