https://blog.csdn.net/qq_36822018/article/details/83028661(先看看这个

https://blog.csdn.net/weixin_34268169/article/details/88834074(再先看看这个

https://www.jianshu.com/p/a735096f3eda(注册登录

方法1

class Container extends Component {
render() {
console.log("一直执行的根")
return (
<Switch>
{
router.map((router, index) => { // const login = document.cookie.includes('login=true')
// sessionStorage.setItem('login', 1)
// sessionStorage.clear();
const login = sessionStorage.getItem("login");
if (login) { // 如果登录了, 返回正确的路由
return <Route exact key={index} path={router.path}
render={
props => (
<router.component {...props} routes={router.routes} />
) }
/>
} else { // 没有登录就重定向至登录页面
// alert("你还没有登录哦, 确认将跳转登录界面进行登录!")
return <Redirect key={'login'} to={{
pathname: '/login',
state: {
from: ''
}
}} />
}
})
}
</Switch>
);
} } export default Container;

https://www.jianshu.com/p/ad7e6ec86ba7

import React from 'react'
import { Route, Redirect } from 'react-router-dom'
// 这个组件将根据登录的情况, 返回一个路由
const PrivateRoute = ({component: Component, ...props}) => {
// 解构赋值 将 props 里面的 component 赋值给 Component
return <Route {...props} render={(p) => {
const login = document.cookie.includes('login=true')
if (login){ // 如果登录了, 返回正确的路由
return <Component />
} else { // 没有登录就重定向至登录页面
alert("你还没有登录哦, 确认将跳转登录界面进行登录!")
return <Redirect to={{
pathname: '/login',
state: {
from: p.location.pathname
}
}}/>
}
}}/>
}
export default PrivateRoute

方法2 不知道是否有坑

https://cloud.tencent.com/developer/ask/128189

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
import Login from './components/Login/Login'
import Home from './components/Home/Home'
import store from './store/store'
import {Provider} from 'react-redux';
import history from './history/history';
import {Router,Route,Switch,Redirect} from 'react-router-dom'
import {connect} from 'react-redux' class App extends Component {
render() {
let storelogginState=store.getState();
let logginState=storelogginState.loginReducer.loggedIn
console.log('store',logginState)
return (
<Router history={history}>
<div className="App">
<Provider store={store}>
<Switch>
<Route exact path="/" component={Login}/>
<Route exact path="/home" render={()=>(
this.props.loginReducer.loggedIn?(<Home/>):(<Redirect to="/"/>)
) }/>
</Switch>
</Provider>
</div>
</Router> );
}
}

方法3

export default () => (
<Router history={hashHistory}>
<Route path="/" component={base.app} onEnter={isLogin}>
<IndexRoute component={base.example} />
<Route path="/desk$/index" component={base.example} />
<Route path="/socketReceive" component={base.socketReceive} /></Route>
<Route path="/login" component={base.login} />
<Route path="*" component={base.notfound} />
</Router>
)
// 进入路由的判断
export const isLogin = (nextState, replaceState) => {
if (nextState.location.query && nextState.location.query.ticket) { // 如果url自带ticket
sessionStorage.setItem('token', 'ticket')
}
if (nextState.location.query && nextState.location.query.key) { // 如果url自带key
sessionStorage.setItem('token', 'key')
}
const token = sessionStorage.getItem('token')
if (!token) { // 没有token,那就返回首页
replaceState('/login')
}
}

利用HTML5的history.replacestate()修改当前页面的URL

https://blog.csdn.net/mmcrsx_blog/article/details/81124269

方法4

可以参考vue的

https://www.cnblogs.com/dianzan/p/11319821.html

react的登录逻辑的更多相关文章

  1. 网站实现微信登录之回调函数中登录逻辑的处理--基于yii2开发的描述

    上一篇文章网站实现微信登录之嵌入二维码中描述了如何在自己的登录页面内嵌入登录二维码,今天的这篇文章主要是描述下在扫码成功之后微信重定向回网站后登录逻辑的处理,其实也就是验证身份信息,授权用户登录的逻辑 ...

  2. 1、IOS开发--iPad之仿制QQ空间(登录界面搭建+登录逻辑实现)

    开始搭建登录界面 登录界面效果图: 相关的图片资源下载百度云备份链接: http://pan.baidu.com/s/1o71cvMU 密码: 2h7e 步骤开始: 设置辅助窗口的位置在下方 快捷键o ...

  3. ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及abp封装的Javascript函数库

    经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这里算是前面几节的一个初次试水. 首先我们数据库已经有的相应的数据. 模型和DTO已经建好,所以我们直接在服务 ...

  4. django登录逻辑

    django-restframework中已经实现了登录逻辑,只需要安装配置就可以使用 pip install djangorestframework-jwt REST_FRAMEWORK = { ' ...

  5. ASP.NET WebAPI 双向token实现对接小程序登录逻辑

    最近在学习用asp.net webapi搭建小程序的后台服务,因为基于小程序端和后台二者的通信,不像OAuth(开放授权),存在第三方应用.所以这个token是双向的,一个是对用户的,一个是对接口的. ...

  6. ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及几种abp封装的Javascript函数库

    返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期         简介 经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这 ...

  7. [py][mx]django处理登录逻辑

    浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...

  8. tp 例子=登录逻辑

    <?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller{ ...

  9. ngx_lua实现登录逻辑

    最近在公司做一个简单的portal,本来很简单的,只用ngx_lua就可以实现所有的业务逻辑,不需要upstream上游服务.但被要求接入公司内部的用户校验系统,说白了就是一个登录过程,只允许公司内部 ...

随机推荐

  1. 数据结构-单链表-类定义C++

    原理可访问https://www.cnblogs.com/yang901112/p/11674333.html 头文件 #ifndef RLIST_H #define RLIST_H #include ...

  2. docker 实践八:docker-compose

    本篇介绍 docker 官方三剑客之一的 docker-compose. 注:环境为 CentOS7,docker 19.03. docker-compose docker-compose 的前身是开 ...

  3. WEB学习路线2019完整版(附视频教程+网盘下载地址)

    WEB学习路线2019完整版(附视频教程+网盘下载地址).适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利.高薪水的职业了.所以现在学习web前端开发的技术人员也是 ...

  4. 题解-AtCoder ARC-078F Mole and Abandoned Mine

    problem ATC-arc078F 题意概要:给定一个 \(n\) 点 \(m\) 边简单无向图(无自环无重边),边有费用,现切去若干条边,使得从 \(1\) 到 \(n\) 有且仅有一条简单路径 ...

  5. windows下安装mysql-8.0.18-winx64

    1.下载安装包 安装包现在地址: https://dev.mysql.com/downloads/mysql/ 2.解压缩至安装目录 解压缩下载之后的zip,我这里使用的安装路径为: C:\Progr ...

  6. MySQL 体系结构及存储引擎

    MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...

  7. VS.NET(C#)--2.6_ASP.NET服务器控件层次结构

    ASP.NET服务器控件层次结构 语法 <asp:ControlType Id="ControlID" Rubat="Server" Property=& ...

  8. k8s 开源web操作平台

    https://kuboard.cn/install/install-dashboard.html kuborad

  9. centos安装rocketMQ

    1.下载安装包 http://rocketmq.apache.org/release_notes/ 这里选择 4.4.0 版本,点击进去 可以选择源码包或者二进制文件,这里选择二进制文件(ps:如果选 ...

  10. dockerfile创建镜像1

    vim Dockerfile FROM alpine:latest MAINTAINER brady CMD echo "hello world" 进行构建 docker buil ...