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. Linux中光标消失解决办法

    假如Linux下光标消失,不要急: echo -e "\033[?25l"  隐藏光标 echo -e "\033[?25h" 显示光标 (转载自:https: ...

  2. [Luogu5320][BJOI2019]堪破神机(DP+斯特林数)

    https://www.cnblogs.com/cjyyb/p/10747543.html 特征方程+斯特林反演化简式子,要注意在模998244353意义下5没有二次剩余,所以每个数都要用$a+b\s ...

  3. github新建远程仓库初始化记录

    …or create a new repository on the command line echo "# 输出内容" >> README.md git init ...

  4. mybatis - 问题记录

    记录使用 mybatis 过程中遇到的一些报错,及原因以及解决方法. 1. 报错: Could not find parameter map com.lx.mapper.HotelMapper.map ...

  5. 这个一个对ES6多个异步处理的并发继发思想的总结和理解

    1.首先我们需要理解的是js中for循环.forEach循环.map循环的一些差异性,直接说了为后面说到的提供一些依据 1.1 for循环最基本,也是最容易理解的. 1.2 forEach和map用法 ...

  6. C# 求余 int a = 371 / 100 % 10,求a的结果为多少?//nt 和int类型计算得到的结果还是int类型

    //int 和int类型计算得到的结果还是int类型 eg:int a = 371 / 100 % 10,求a的结果为多少? 首先371除以100,再让此结果除以10求余数. 一 371除以100得到 ...

  7. js入门之DOM动态创建数据

    一. 知识点回顾 1. DOM结构 nodeName: '' 标签名 nodeType: '' 类型 1元素节点 2属性节点 3文本节点 nodeValue: '' 如果是元素节点 nodeValue ...

  8. iOS动画:CAKeyframeAnimation

    网络中Core Animation类的继承关系图       属性简介 @interface CAKeyframeAnimation : CAPropertyAnimation /* 提供关键帧数据的 ...

  9. python使用Pyinstaller打包

    一.前言 python文件打包,将.py文件转化成.exe文件(windows平台),可以使用Pyinstaller来打包 Pyinstaller可以在全平台下使用,但是请注意打包生成的文件不能在全平 ...

  10. [转]預防 Android Dex 64k Method Size Limit

    转载自:http://ingramchen.io/blog/2014/09/prevention-of-android-dex-64k-method-size-limit.html 08 Septem ...