• Vue电商项目--登录与注册


    登录注册静态组件

    刚刚报了一个错误,找不到图片的资源

    assets文件夹--放置全部组件共用静态资源

     在样式当中也可以使用@符号【src别名】。切记在前面加上 

    注册业务上

    先修改原先的接口成这个按钮

     然后把input框里面的数据保存到data中 

    注册业务下

    就是点击获取验证码,就要发起请求

    下面是接口:

    /api/user/passport/sendCode/{phone}

    获取验证码

    get

    /api/user/userAddress/auth/findUserAddressList

    获取用户地址信息

    get

    请求给完,写仓库。这里把登录和注册合为一个仓库 

     然后去调用它

     成功返回了一个验证码

    获取验证码的这个接口,把验证码返回,但是正常情况,后台验证码发送到用户手机上【省钱】

     这样就把数据存储进去了,此时我们就可以在组件中拿数据了

     添加一个事件,用于获取vuex中的验证码

     获取成功

    完成下一个逻辑,俩个密码之间的判断

     当然,注册按钮也是有点击事件,也是向服务器发起请求

    接口文档 

    注册用户

    请求地址

    /api/user/passport/register

    请求方式

    POST

    参数类型

    参数名称

    类型

    是否必选

    描述

    phone

    string

    Y

    注册手机号

    password

    string

    Y

    密码

    code

    string

    Y

    验证码

    返回示例

    成功:

    {

        "code": 200,

        "message": "成功",

        "data": null,

        "ok": true

    }

     先写接口,然后去仓库发起请求

     派发action

     测试登录成功

    完善代码 

     成功回调 

    登录业务(token)

    登陆界面收集用户名和密码

    然后是登陆的接口

    请求地址

    /api/user/passport/login

    请求方式

    POST

    参数类型

    参数名称

    类型

    是否必选

    描述

    phone

    string

    Y

    用户名

    password

    string

    Y

    密码

    返回示例

    成功:

    {

    code: 200

    message: "成功"

    data:{

    nickName:"Administrator",

    name:"Admin",

    token: 90aa16f24d04c7d882051412f9ec45b"

    }

    ok: true

    }

    失败:

    {

       code: 201

    message: "失败"

    data: null

    ok: false

    }

    先写接口,然后在仓库中去调用这个接口

     然后去派发action 

    写一个登陆的回调

     这里我们要注意的一点,就是阻止表单的默认行为。

    这里有一个注意点

    Cannot access ‘phone‘ before initialization 我报了这个错误

    解决方案就是const {phone,password}=this;少了;

     登录成功他会返回三个值

    其中一个token要注意

    登录成功的时候,后台为了区分你这个用户是谁-服务器下发token【令牌:唯一标识符】

    登录接口:做的不完美,一般登录成功服务器会下发token,前台持久化存储token,【带着token找服务器要用户信息进行展示】

    我们需要持久化存储这个token的值,但是要注意的一点就是,vuex是不能持久化的存储数据

    用户登录携带token获取用户信息

    复习:

    1.完成了登录和注册的静态组件【assets文件夹:组件共用的静态资源 css当中书写@符号】

    2.表单验证暂时没有处理,最后一天统一处理

    3.vuex存储数据非持久化

    添加了token校验获取用户登录信息,用户登录只保存用户的token

    token校验

    http://182.92.128.115/api/user/passport/auth/getUserInfo

    先写接口

     写完api,搞三连环

    然后在请求拦截器中,设置他的token

      此时登录,然后跳转就能token了

     然后使用v-if把登录先后页面需要展示的显示出来

    但是在刷新,token就没了。因为没有再次派发事件,所以,现在我们这种写法没有持久化存储,不完整的。

    登录业务中讲解存在问题

    持久化存储,也可以采用外部封装的方式

     外部封装了一个,然后引用它

     现在我们确实是存了,但是并没有取出来使用

    上面获取用户信息的代码有点问题,我并没有写完成,因此参数没有传进来。因此报错了,下面是完整代码

    1. async getUserInfo({commit},data){
    2. let result=await reqUserInfo(data)
    3. if(result.code==200){
    4. commit("GETUSERINFO",result.data)
    5. }
    6. }

     这就能实现持久化存储 

    也可以封装成一个模块

    但是现在只是在home页面中有效果,因为我们只在home配发了这个。

    现在还存在俩个问题1.多个组件展示用户信息需要在每一个组件的mounted中出发 this.$store.dispatch('getUserInfo')不行

    2.用户登录了,就不应该在会有登录页 

    退出登录

    先给退出按钮绑定一个事件

    1.需要发请求,通知服务器退出登录【清除一些数据,token】

    2.清除项目当中的数据【userinfo.token】 

    退出请求文档:

    退出登陆

    请求地址

    /api/user/passport/logout

    请求方式

    GET

    参数类型

    返回示例

    成功:

    {

        "code": 200,

        "message": "成功",

        "data": null,

        "ok": true

    }

    老样子先写api

    然后仓库三连环 

    然后还有清除本地数据 

    然后派发action

     退出成功,返回home页面 

  • 相关阅读:
    React和Redux中的不变性
    数据结构与算法C语言版学习笔记(3)-线性表的链式结构:链表
    【面试题精讲】构造方法有哪些特点?是否可被 override?
    SpringCloud (三) ——Nacos注册中心
    视频融合技术平台解决方案
    Android.bp常用语法和预定义属性
    DEDE织梦标签名称:{/dede:arclist} 详解
    MFC 使用 Imm 类库实现输入法修改输入模式的技术文档
    脉冲波形的产生与变换
    深入学习NumPy库在数据分析中的应用场景
  • 原文地址:https://blog.csdn.net/weixin_64612659/article/details/131352211