nuxt框架前后端登录注册功能实现(三)

流程图:
在这里插入图片描述

以下代码所有的cookie都是引入js-cookie之后的,没有下载该库和引用该库均会报错:
引入代码:
import cookie from 'js-cookie'

登录核心代码:

//调用接口发起登录请求
login.loginUser(this.user)
              .then(response => {//返回code为100代表成功
                if (response.data.code === 100) {
                  //第二步,利用js-cookie把获取的token放到cookie中去
                  //第一个参数:给cookie取个变量名,第二个参数:cookie的值,第三个值:domain cookie作用域
                  cookie.set('guli_token', response.data.data.token, {domain: 'localhost'})
                  //第三步在requests.js创建拦截器
                  //第四步调用接口,通过token获取用户信息并存在cookie中
                  login.getUserInfoByToken()
                  .then(response => {
                    cookie.set('guli_info', response.data.data.info, {domain: 'localhost'})
                    //从登录页面跳转到首页
                    window.location.href = '/'
                  })

                } else {
                  this.$message({
                    type: 'error',
                    message: '登录失败,请检查邮箱和密码是否正确'
                  })
                }

login.loginUser是自己编写的js对象,作用就是向后端发起登录请求
终于到了前端登录实现过程了,
需要的第三方库有:js-cookie,axios
js-cookie方便操作对cookie的增删,因为需要将后端登录成功传递过来的token进行存储到cookie中去,
封装axios并定义一个拦截器:
如下:
requests.js

import axios from 'axios'
import cookie from 'js-cookie'

const service = axios.create({
  baseURL: 'http://localhost:9001',
  timeout: 20000
});
service.interceptors.request.use(config => {
    // 在发送请求之前做些什么
    //判断cookie中是否有名为guli_token的数据
    if (cookie.get('guli_token')) {
      //把获取的cookie值放到header中
      config.headers['token'] = cookie.get('guli_token');
    }
    return config;
  },
  error => {
    // 对请求错误做些什么
    return Promise.reject(error)
  });
export default service

当登录成功时,后端返回了token之后,存入进cookie中,并根据后端接口,利用token得到一些用户信息,eg:头像,昵称,id等等
因为后端根据token获取用户信息的接口是,在HttpServletRequests中Header内取出token。
所以拦截器的作用就体现出来了,拦截器代码的意思是,如果cookie中存在token这个东西,就把axios发送的每个请求的header加上token,方便于后续请求后端接口时得request的header中含有token信息,

token和用户info最后都存在了cookie中,并且是以字符串形式,所以使用的时候需要利用到js中的JSON.parse方法进行转换

showInfo(){
        //获取得到的是一个字符串,需要转化为json对象
        var infoStr = cookie.get('guli_info')
        if (infoStr){
         this.info = JSON.parse(infoStr)
        }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Nuxt框架中进行PC端字体大小适配的方法有多种。以下是其中一种常用的方法: 1. 使用CSS的`rem`单位:`rem`单位是相对于根元素(html)的字体大小而言的。可以通过设置根元素的字体大小,从而实现整个页面的字体大小适配。具体步骤如下: a. 在根组件(通常是`layouts/default.vue`)中,添加一个`mounted`钩子函数。 b. 在钩子函数中,使用`window`对象的`addEventListener`方法监听`resize`事件。 c. 在事件回调函数中,获取页面的宽度,并根据设计稿的尺寸计算出相应的根元素字体大小。 d. 使用`document.documentElement.style.fontSize`来设置根元素的字体大小。 e. 将设计稿的尺寸与实际页面的字体大小进行比例计算,从而实现字体大小的适配。 例如,假设设计稿的宽度为1920px,设计稿中某个元素的字体大小为16px,实际页面的宽度为960px,那么我们可以将根元素的字体大小设置为8px(960 / 1920 * 16),从而实现字体大小的适配。 引用 2. 使用CSS的`@media`查询:通过使用`@media`查询,可以根据不同的屏幕尺寸设置不同的字体大小。具体步骤如下: a. 在CSS文件中,使用`@media`查询根据不同的屏幕尺寸设置不同的字体大小。 例如,假设设计稿中某个元素的字体大小为16px,在页面宽度小于等于768px时,将字体大小设置为12px;在页面宽度大于768px时,将字体大小设置为16px。 ```css /* 在小于等于768px的屏幕尺寸下,设置字体大小为12px */ @media (max-width: 768px) { .element { font-size: 12px; } } /* 在大于768px的屏幕尺寸下,设置字体大小为16px */ @media (min-width: 769px) { .element { font-size: 16px; } } ``` 引用 这是在Nuxt框架中进行PC端字体大小适配的两种常用方法之一。你可以根据你的需要选择适合的方法来实现字体大小的适配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值