day06-02.登录模块
基本结构搭建

实现步骤
在
Login/index.js中创建登录页面基本结构在 Login 目录中创建 index.scss 文件,指定组件样式
将
logo.png和login.png拷贝到 https://cdn.jsdelivr.net/npm/itheima-react/assets 目录中
代码实现 pages/Login/index.js
pages/Login/index.scss
表单校验实现
实现步骤
为 Form 组件添加
validateTrigger属性,指定校验触发时机的集合为 Form.Item 组件添加 name 属性
为 Form.Item 组件添加
rules属性,用来添加表单校验规则对象
代码实现 page/Login/index.js
获取登录表单数据
实现步骤
为 Form 组件添加
onFinish属性,该事件会在点击登录按钮时触发创建 onFinish 函数,通过函数参数 values 拿到表单值
Form 组件添加
initialValues属性,来初始化表单值
代码实现 pages/Login/index.js

封装request工具模块
业务背景: 前端需要和后端拉取接口数据,axios是使用最广的工具插件,针对于项目中的使用,我们需要做一些简单的封装
实现步骤
安装 axios 到项目
创建 utils/request.js 文件
创建 axios 实例,配置
baseURL,请求拦截器,响应拦截器在 utils/index.js 中,统一导出request
使用Redux管理token
安装Redux相关工具包
配置Redux
实现登录逻辑
业务逻辑:
跳转到首页
提示用户登录成功
token持久化
业务背景: Token数据具有一定的时效时间,通常在几个小时,有效时间内无需重新获取,而基于Redux的存储方式又是基于内存的,刷新就会丢失,为了保持持久化,我们需要单独做处理
封装存取方法
实现持久化逻辑
刷新浏览器,通过Redux调试工具查看token数据 
请求拦截器注入token
业务背景: Token作为用户的数据标识,在接口层面起到了接口权限控制的作用,也就是说后端有很多接口都需要通过查看当前请求头信息中是否含有token数据,来决定是否正常返回数据

拼接方式:config.headers.Authorization =
Bearer ${token}}
utils/request.js
路由鉴权实现
业务背景:封装
AuthRoute路由鉴权高阶组件,实现未登录拦截,并跳转到登录页面 实现思路:判断本地是否有token,如果有,就返回子组件,否则就重定向到登录Login
实现步骤
在 components 目录中,创建
AuthRoute/index.jsx文件登录时,直接渲染相应页面组件
未登录时,重定向到登录页面
将需要鉴权的页面路由配置,替换为 AuthRoute 组件渲染
代码实现 components/AuthRoute/index.jsx
src/router/index.jsx
Last updated
Was this helpful?