• 微服务项目:尚融宝(29)(后端搭建:实现用户登录(2))


    认清现实,放弃幻想,准备斗争

    二、前端整合

    1、登录脚本

    pages/login.vue

    1. methods: {
    2. //登录
    3. login() {
    4. this.$axios
    5. .$post('/api/core/userInfo/login', this.userInfo)
    6. .then((response) => {
    7. // 把用户信息存在cookie中
    8. cookie.set('userInfo', response.data.userInfo)
    9. window.location.href = '/user'
    10. })
    11. },
    12. },

    2、页面头信息

    components/AppHeader.vue

    脚本

    一、后端的接口

    1、添加令牌校验接口

    service-core 中 UserInfoController添加令牌校验接口

    1. @ApiOperation("校验令牌")
    2. @GetMapping("/checkToken")
    3. public R checkToken(HttpServletRequest request) {
    4. String token = request.getHeader("token");
    5. boolean result = JwtUtils.checkToken(token);
    6. if(result){
    7. return R.ok();
    8. }else{
    9. //LOGIN_AUTH_ERROR(-211, "未登录"),
    10. return R.setResult(ResponseEnum.LOGIN_AUTH_ERROR);
    11. }
    12. }

    2、Swagger请求头添加header

    step1:service-base添加依赖

    1. <groupId>com.github.xiaoymingroupId>
    2. <artifactId>swagger-bootstrap-uiartifactId>
    3. <version>1.9.2version>

    step2:访问

    http://localhost:8110/doc.html

    step3:添加全局参数

     

    二、前端整合

    1、优化showInfo

    components/AppHeader.vue

    脚本

    1. showInfo() {
    2. // debugger
    3. let userInfo = cookie.get('userInfo')
    4. if (!userInfo) {
    5. console.log('cookie不存在')
    6. this.userInfo = null
    7. return
    8. }
    9. userInfo = JSON.parse(userInfo)
    10. //先在服务器端校验token
    11. this.$axios({
    12. url: '/api/core/userInfo/checkToken',
    13. method: 'get',
    14. headers: {
    15. //如果token校验成功,再展示user信息
    16. token: userInfo.token,
    17. },
    18. }).then((response) => {
    19. console.log('校验成功')
    20. this.userInfo = userInfo
    21. })
    22. },

    2、axios请求拦截(了解)

    可以在axios请求拦截器中统一添加header

    1. $axios.onRequest((config) => {
    2. // 添加请求头:token
    3. let userInfo = cookie.get('userInfo')
    4. if (userInfo) {
    5. console.log('添加header')
    6. userInfo = JSON.parse(userInfo)
    7. config.headers['token'] = userInfo.token
    8. }
    9. console.log('Making request to ' + config.url)
    10. })

    3、axios响应拦截(了解)

    plugins/axios.js:处理未登录状况

    1. $axios.onResponse((response) => {
    2. console.log('Reciving resposne', response)
    3. if (response.data.code === 0) {
    4. return response
    5. } else if (response.data.code === -211) {
    6. console.log('token校验失败')
    7. cookie.set('userInfo', '')
    8. //debugger
    9. //跳转到登录页面
    10. window.location.href = '/login'
    11. } else {
    12. Message({
    13. message: response.data.message,
    14. type: 'error',
    15. duration: 5 * 1000,
    16. })
    17. return Promise.reject(response)
    18. }
    19. })

     今日bug

     当前端的是post,后端是get的时候,也会出现跨域的问题

     api请求方式是否正确  注意get不要写成post

      dictList(id){
        return request ({
          // 与后端的接口,调用的是后端的controller
          url: `/admin/cmn/dict/findChildData/${id}`,
          method: 'get',
        })
      },

  • 相关阅读:
    android framework之Applicataion启动流程分析(二)
    鸿蒙HarmonyOS实战-ArkUI组件(Row/Column)
    分布式事务
    【五月集训】—— 汇聚星球,算法锤炼,集中一点,登峰造极
    驼峰式与下划线命名规则
    MAX485芯片介绍(MAX485ESA+T,半双工RS422和RS485串口收发传输芯片,2.5Mbps传输速率。5V逻辑电平)
    深化校企合作|云畅科技与湖南女子学院签订校企合作协议
    SpringBoot【 Thymeleaf、SpringBoot热部署、SpringBoot整合MyBatis、 SpringBoot参数校验】(四)-全面详解(学习总结---从入门到深化)
    “AI在未来”公益计划,亚马逊云科技将教育资源带到更多中西部学校
    解析赋值的用途
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/126802677