登录模块(自动登录)

render里面要直接跳到某个页面要用return <Redirect to="/" />   不用this.props.history.replace(‘/‘);  因为render里面必定return

this.props.history.replace用在点击回调事件里面

1.admin.js里面

<script>
   render() {
        //读取保存的user ,如果不存在直接跳转到登录页面
        const user = JSON.parse(localStorage.getItem(‘user_key‘) || ‘{}‘)    //const user= memoryUtils.user  后期改进版
        if (!user._id) {
            // this.props.history.replace(‘/login‘) //事件回调中使用
            return <Redirect to="/login" />
        }

</script>

2.login.js里面

<script>

 if(res.code === ‘0000‘){
              //跳转到管理页面
              const user = res.data
              localStorage.setItem(‘user_key‘,JSON.stringify(user)) 

//storageUtils.saveUser(user) 改进版

        //memoryUtils.user=user  终极版(增加)

this.props.history.replace(‘/‘)
              message.success(‘登录成功‘)
            }else{
              message.error(res.msg) //res.msg后端返回的信息
            }

render() {
      const user = JSON.parse(localStorage.getItem(‘user_key‘) || ‘{}‘)    //const user = memoryUtils.user 终极版

//改进版:const user = storageUtils.getUser()

if (user._id) {
          return <Redirect to="/" />
      }

</script>

封装保存用户,读取用户,删除用户为方法

<script>

const USER_KEY = ‘user_key‘
export default {
    //返回user对象,如果没有返回{}
    getUser() {
        return JSON.parse(localStorage.getItem(USER_KEY)||‘{}‘)
    },
    //保存user
    saveUser(user) {
        localStorage.setItem(USER_KEY,JSON.stringify(user))
    },
    //删除user
    removeUser() {
        localStorage.removeItem(USER_KEY)
    }
}

</script>

github有个库  叫store.js  比较兼容  比原生localstorage兼容

<script>

import store from ‘store‘
const USER_KEY = ‘user_key‘
export default {
    //返回user对象,如果没有返回{}
    getUser() {
        // return JSON.parse(localStorage.getItem(USER_KEY)||‘{}‘)
        return store.get(USER_KEY) || {}  //store.get(USER_KEY)是已经解析好了的   所以之间后面写{}
    },
    //保存user
    saveUser(user) {
        // localStorage.setItem(USER_KEY,JSON.stringify(user))
        store.set(USER_KEY,user)
    },
    //删除user
    removeUser() {
        // localStorage.removeItem(USER_KEY)
        store.removeItem(USER_KEY)

    }
}

</script>

优化:每次都去storage里存取,到文件去存取比较慢,直接在内存在存取快,所以创建一个memoryUtils

memoryUtils.js

<script>

import storageUtils from "./storageUtils";

export default{
    user:storageUtils.getUser()//用来存储登录用户信息,默认没有登录.初始值为local中读取的
    //什么时候才有值,当然是尽早的到localstorage里去拿值,index.js是入口文件,可以在这里,但也可以在不同组件中引入
}

</script>

原文地址:https://www.cnblogs.com/lucy-xyy/p/11830218.html

时间: 2024-08-05 21:17:00

登录模块(自动登录)的相关文章

自动登录:Filter,Session,Cookie综合例子

初始登录Servlet: package cn.xbai.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class

Filter过滤器实现自动登录

Filter介绍 问题:Filter是什么,它能做什么? 1.从两个方面来解析Filter是什么? 1.功能  可以帮助我们对请求与响应操作进行过滤. 2.技术  Sun公司定义的一个接口,javax.servlet.Filter 2.Filter能完成什么操作? 常用示例: 1.通用编码过滤器. 2.粗粒度的权限控制(url级别) 3.过滤一些敏感字 Filter创建步骤: 1.创建一个类实现javax.servlet.Filter接口. 2.重写Filter接口中三个方法  init  do

设置主机开机后自动登录然后自动锁定

win7 32位 如何实现先登录后锁定? 内容根据网上资料整理 自动登录方法1这是win7 32位和 xp的相关注册表,导入即可实现先登录后锁定.Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]"DefaultDomainName"="你的登陆域" [如果没有的话本行去掉]"Defaul

基于localStorge开发登录模块的记住密码与自动登录

前沿||我是乐于分享,善于交流的鸟窝 先做写一篇关于登录模块中记住密码与自动登录的模块.鸟窝微信:jkxx123321 关于这个模块功能模块的由来,这是鸟大大的处女秀,为什么这么说呢?一天在群里,一个哥们说有私活,开发一个****模块,我那天手痒痒就和他聊了两句,然后,就决定给她做这个模块了,和他谈了谈交付时间,他说最迟两天,然后谈了谈加个,最后达成,500¥!!!这个模块其实第一天晚上我就开发出来了,那时我给他微信说,功能模块开发ok了,要不要远程查看一下,没问题的话就交了,一会他回我,好了就

爬虫1 爬虫介绍, requests模块, 代理(正向代理,反向代理), 爬梨视频, 自动登录网站, HTTP协议复习

HTTP协议复习 参考:https://www.cnblogs.com/an-wen/p/11180076.html 1爬虫介绍 # 1 本质:模拟发送http请求(requests)---->解析返回数据(re,bs4,lxml,json)--->入库(redis,mysql,mongodb) # 2 app爬虫:本质一模一样 # 3 为什么python做爬虫最好:包多,爬虫框架:scrapy:性能很高的爬虫框架,爬虫界的django,大而全(爬虫相关的东西都集成了) # 4 百度,谷歌,就

Azure 基础:用 PowerShell 自动登录

PowerShell 是管理 Azure 的最好方式,因为我们可以使用脚本把很多的工作自动化.比如把 Azure 上的虚拟机关机,并在适当的时间把它开机,这样我们就能节省一些开支,当然我们同时也为减少二氧化碳的排放做出了贡献! PowerShell 的 Azure 模块中为我们提供了不同的 API, 早期的叫 ASM(Azure Service Manager).随着 Azure 的发展变化,又出现了一套新的 API 叫 ARM(Azure Resource Management).我们这里仅介

estore商城案例(三)------Filter过滤器:自动登录&amp;权限管理

前面写好了用户登录\注册\添加商品的功能模块.下面写一下对于这些功能模块的相关过滤器---自动登录与权限管理: 一.自动登录: 业务逻辑是这样的:jsp登录页面有个“自动登录选项”,如果登录这勾选了,那么在serlvet程序中则会额外的生成一个保存用户名和密码的cookie,然后每次用户向服务器发送请求时,Filter过滤器都会先判断用户的登录状态(session),如果已经登录那么无需做出受任何操作直接放行,如果没有登录(无session),那么这时体现自动登录功能作用的时候到了,先获取自动登

JavaEE之--------利用过滤器实现用户自动登录,安全登录,取消自动登录黑用户禁止登录

在我们生活中,对于账户的自动登录已经很常见了,所以利用过滤器实现这个功能 主要介绍用户的自动登录和取消自动登录,以及实现一天自动登录或者n天实现自动登录,当用户ip被加入到黑名单之后,直接利用过滤器返回一个警告页面. 过滤器的功能很是强大,我们只需要在写好的前台后servlet之后进行添加就可以实现这个功能 Ps:这个仅仅只是一个演示而已,里面的访问数据库的部分,自己随意模拟了下,主要是突出实现自动登录的功能. 前台代码: 前台代码是成功与否都在这个页面显示.用到的技术:jstl标签的应用,se

Web应用程序系统的多用户权限控制设计及实现-登录模块【4】

通过前三个模块的介绍,把web权限系统开发所需要的基本类,Css文件,EasyUI框架等准备好后,就可以着手开始系统的编码了. 登陆模块对于权限处理的系统特别关键,根据输入用户的的信息,可自动从数据库中加载该用户可以访问的页面,匹配出可以操作的模块. 由于登录模块是系统的基本模块,没有单独放在一个域里面.登录的控制器在项目默认的Controllers文件夹下.登录对应的视图在项目默认的Views文件夹下. 1.1视图 登录视图中比较重要的是通过.NET MVC的Ajax异步方式提交用户名和密码到

Admin.Admin/Login --- 后台项目中的管理员及登录模块

管理员模块: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Script.Serialization; using DIDAO.BLL; using DIDAO.Common; using DIDAO.Model; namespace DIDAO.Admin.Admin { /// <summary> /// AdminControlle