react项目 实现维持登录与自动登录(刷新后依然处于登录状态)store 包 插件 的应用

描述:

  1. 登录后,刷新后依然处于登录状态(维持登录)
  2. 登录后,关闭浏览器后打开浏览器访问依然是已经登录状态(自动登录)
  3. 登录后,访问登录路径自动跳转到管理界面

1.下载依赖

2.utils/storageUtils.js 

/*
* 进行local数据存储管理的工具模块
* */
import store from 'store'
const USER_KEY = 'user_key'
export default {
  //保存
  saveUser(user) {
    // localStorage.setItem(USER_KEY,JSON.stringify(user))
    store.set(USER_KEY, JSON.stringify(user))
  },
  //读取
  getUser() {
    // return JSON.parse(localStorage.getItem(USER_KEY) || '{}')
    return store.get(USER_KEY) || {}
  },
  //删除
  deleteUser() {
    // localStorage.removeItem(USER_KEY)
    store.remove(USER_KEY)
  }
}

3.login/Login.jsx

import {Redirect} from 'react-router-dom'
import storageUtils from '../../utils/storageUtils'
 
 
const result =await reqLogin(username,password)
//const result = response.data //{status:0,data: user}  {status:1,message: 'xxx'}
if (result === 0){  //登录成功
    //提示成功
    message.success('登录成功')
    //跳转到后台管理界面(不需要再回退了,否则用push())
    const user = result.user
    //如何显示用户信息呢?需要储存起来
    memoryUtils.user = user     //保存在内存中
    storageUtils.saveUser(user) //保存到local中
 
    this.props.history.replace('/')
}else{//登录事变提示错误信息
    message.error(result.msg)
}
 
 
//在render()中
//如果用户已经登录,则自动跳转到主界面
const user = memoryUtils.user
if(user && user._id){
    return <Redirect to = '/'/>
}

4.src/index.js

/*
应用的入口组件:作用是渲染组件
* */
 
import React from 'react'
import ReactDOM from 'react-dom'
//import 'antd/dist/antd.css'
 
import App from './App'
import storageUtils from './utils/storageUtils'
import memoryUtils from  './utils/memoryUtils'
 
//刷新页面时:读取local中保存user,保存到内存中
const user = storageUtils.getUser()
memoryUtils.user = user
 
 
//将App组件标签渲染到index页面的div上
ReactDOM .render(<App/>,document.getElementById('root'));

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值