react的登录逻辑
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的登录逻辑的更多相关文章
- 网站实现微信登录之回调函数中登录逻辑的处理--基于yii2开发的描述
上一篇文章网站实现微信登录之嵌入二维码中描述了如何在自己的登录页面内嵌入登录二维码,今天的这篇文章主要是描述下在扫码成功之后微信重定向回网站后登录逻辑的处理,其实也就是验证身份信息,授权用户登录的逻辑 ...
- 1、IOS开发--iPad之仿制QQ空间(登录界面搭建+登录逻辑实现)
开始搭建登录界面 登录界面效果图: 相关的图片资源下载百度云备份链接: http://pan.baidu.com/s/1o71cvMU 密码: 2h7e 步骤开始: 设置辅助窗口的位置在下方 快捷键o ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及abp封装的Javascript函数库
经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这里算是前面几节的一个初次试水. 首先我们数据库已经有的相应的数据. 模型和DTO已经建好,所以我们直接在服务 ...
- django登录逻辑
django-restframework中已经实现了登录逻辑,只需要安装配置就可以使用 pip install djangorestframework-jwt REST_FRAMEWORK = { ' ...
- ASP.NET WebAPI 双向token实现对接小程序登录逻辑
最近在学习用asp.net webapi搭建小程序的后台服务,因为基于小程序端和后台二者的通信,不像OAuth(开放授权),存在第三方应用.所以这个token是双向的,一个是对用户的,一个是对接口的. ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及几种abp封装的Javascript函数库
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 简介 经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这 ...
- [py][mx]django处理登录逻辑
浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...
- tp 例子=登录逻辑
<?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller{ ...
- ngx_lua实现登录逻辑
最近在公司做一个简单的portal,本来很简单的,只用ngx_lua就可以实现所有的业务逻辑,不需要upstream上游服务.但被要求接入公司内部的用户校验系统,说白了就是一个登录过程,只允许公司内部 ...
随机推荐
- python学习-51 shelve模块
import shelve f=shelve.open(r'shelve') #f['stu_info'] = {'name':'john','age':'18'} #f['stu2_info'] = ...
- net namespace实验
Net namespace实验 在 Linux 中,网络名字空间可以被认为是隔离的拥有单独网络栈(网卡.路由转发表.iptables)的环境.网络名字空间经常用来隔离网络设备和服务,只有拥有同样网络名 ...
- echarts饼状图位置设置
series: { name: "流量占比分布", type: "pie", radius: ["40%", "60%" ...
- 手动编译ts的经过
动机 以前写ts或者es6,都是用在脚手架搭建的项目中,比如vue和react,当时当我识图写一个ts的demo的,我还要创建一个完整的vue或者react项目?明显不合适,那就要研究一下如何手动搭建 ...
- Stack Overflow是如何做应用缓存的
首先要说下缓存是什么?缓存,就是在取出数据结果后,暂时将数据存储在某些可以快速存取的位置(例如各种NoSQL如Redis,HBase,又或MemoryCache等等),于是就可以让这些耗时的数据结果多 ...
- C# 使用Berkeley DB
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间.简称BDB Berkeley DB是嵌入式键值数据库库,为应用程序提供可扩展的高性能数据管理服务. Berkeley DB ...
- SVN_01概念
客戶端TortoiseSVN 服务器端VIsualSVN SVN是Apache Subversion的缩写,是一个开放源代码的版本控制系. 这些数据放置在一个中央资料库(repository)中.这 ...
- js 遍历树的层级关系的实现
1.遍历树的层级关系 1)先整理数据 2)找到id和数据的映射关系 3)然后找到父节点的数据,进行存储 test() { const list = [ { id: ", parentId: ...
- 关于下载gitbash客户端
gitbash的安装包找不到了,最近又在准备新机器的环境,需要安装git客户端. https://www.git-scm.com/,网址找到了,但是下载非常缓慢.搜了一下,都是改host,但是改了也没 ...
- el-table——可编辑、拖拽排序与校验的formTableDrag
背景: 1.利用form进行校验输入: 2.利用sortable操作Dom替换表格数据顺序: 3.利用lodash实现数据深拷贝与参数替换等 一:最外层的数组校验 <template> & ...