谷粒后台项目的记录:React+Element-React (二):登录页面(解决跨域)

Login组件

准备

1、创建Login文件夹,在该文件夹下创建login.jsxlogin.less,前者是组件后者是样式
2、将login组件以路由的形式加载
login.jsx

import React from "react";

class Login extends ReactDOM.Component {
  constructor(props) {
    super(props);
    this.state = {};
  }
  render() {
    return <div>登录</div>;
  }
}

export default Login;

App.js

3、设置基本样式
4、使用form表单组件来完成用户名和密码

启动后台服务

1、先启动MongoDB数据库

MongoDB数据库的安装和启动

2、进入admin-server_final文件夹,输入以下命令启动服务器

npm start

在这里插入图片描述
项目配套资料下载

登录

封装登录请求函数并使用该函数

//加载
import { reqLogin } from "../api/index";
//使用
try {
   const res = await reqLogin(
     this.state.form.name,
     this.state.form.password
   );
   console.log(res.data);
 } catch (error) {
   console.log("请求登录失败:", error);
 }

请求登录接口
这里会出现跨域问题:
解决:通过代理服务器的方式,在package.json中加入下面这句代码

 "proxy":"http://localhost:5000"

使用message组件实现登录成功与失败的提示

登录成功后跳转到管理界面

this.props.history.replace('/')

保存登录状态
定义一个memoryUtil.js 模块用来在内存中保存一些数据

export default{
  //要保存的数据
}

使用时只需要引入该模块,并读取内部的数据
只保存到memoryUtil.js 还不够,还需要保存到session中。在定义一个storageUtil.js模块

memoryUtil.user = res.data.data;
storyageUtil.saveUser(res.data.data);

优化
如果已经登录,未退出那么当进入登录界面时应该立即跳转到管理界面

 //如果用户已经登录,自动跳转到管理界面
    const user = memoryUtil.user;
    if (user && user._id) {
      return <Redirect to="/" />;
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值