首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果重定向到react-router中的登录,在哪里保存“下一个路径名”?

在react-router中,可以使用<Redirect>组件将用户重定向到登录页面。当用户成功登录后,可以使用react-router提供的withRouter高阶组件来获取当前的路径,并将其保存在localStoragesessionStorage中。

下面是一个示例代码:

代码语言:jsx
复制
import React from 'react';
import { Redirect, withRouter } from 'react-router-dom';

class Login extends React.Component {
  handleLogin = () => {
    // 模拟登录成功
    // 保存下一个路径名
    const { location } = this.props;
    localStorage.setItem('nextPathname', location.pathname);
    // 执行登录操作
  }

  render() {
    return (
      <div>
        {/* 登录表单 */}
        <button onClick={this.handleLogin}>登录</button>
      </div>
    );
  }
}

// 使用withRouter高阶组件包装Login组件
export default withRouter(Login);

在上述代码中,当用户点击登录按钮时,会将当前路径名保存在localStorage中的nextPathname键中。在登录成功后,可以从localStorage中获取该路径名,并使用<Redirect>组件将用户重定向到该路径。

在其他需要验证登录状态的组件中,可以通过检查localStorage中的nextPathname键来判断是否需要重定向到登录页面。例如:

代码语言:jsx
复制
import React from 'react';
import { Redirect } from 'react-router-dom';

class PrivateComponent extends React.Component {
  render() {
    const nextPathname = localStorage.getItem('nextPathname');
    if (!isLoggedIn && nextPathname !== null) {
      // 未登录且存在下一个路径名,重定向到登录页面
      return <Redirect to="/login" />;
    }

    // 渲染私有组件
    return <div>私有组件内容</div>;
  }
}

export default PrivateComponent;

在上述代码中,如果用户未登录且存在下一个路径名,则会使用<Redirect>组件将用户重定向到登录页面。否则,将渲染私有组件的内容。

这种方式可以确保用户在登录后能够被重定向到他们最初请求的页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用ReactHook和context实现登录状态共享

实现效果 将登录表单提交后返回登录结,根据登录结果进行保存token以及登录用户信息。 将整个context里状态更新。 路由鉴权 我们可以路由跳转时候添加一个组件进行包裹路由组件。...我们还可以在用户拿到一个url后进行访问这样url时候,如果我们组件是由AuthRouter进行转发, 那么就需要经过我们自定义 LoginState函数进行查看本地存储或者session里有没有保存登录令牌等信息...具体流程: 编写LoginState函数进行获取保存状态。 编写组件,判断用户是否登录登录态,返回要指向权限组件。 未登录态,返回重定向登录组件。...哪里需要就哪里引用。符合v4建议。...所以登录状态等全局状态是需要进行保存。 当然,如果是临时状态不保存也ok。 实际需要,我们不应该多次使用上下文进行传递数据。而应该设计让组件拥有他单独状态。

5.3K40

Django框架学习笔记(五)给URL命名

我想修改路径名 根据前面做好web项目,登录页面的url为:http://127.0.0.1:8000/login/;如果我们想把路径名login换成signin,该怎么做呢?...遇到麻烦了 如果views里对应方法有重定向跳转就麻烦了,因为重定向跳转redirect方法里已经写了我们改名之前路径名。...如果我们url里将login改成signin,做了一次改名操作了,那么views里我们还要再改一次。如果有很多个页面都做了重定向login页面,我们就需要对每一个函数进行修改操作,太麻烦了!...这样也能完成url传值。 (3)传递参数 views,我们使用redirect重定向一个新url如果要传递参数该怎么办呢?...} 二、多app下URL命名 多app项目中,如果各自name属性相同,重定向访问时候会出现无法访问指定app下url问题。

1K41
  • 【路由】:路由那些事——

    react-router-dom 只是 react-router 一个套壳 react-router 持有核心逻辑 我们来看一下 react-router-dom 是如何对外导出模块: https...比如当用户访问 "/" 路由时,如果用户已经登录过了,那么重定向 /home;如果用户还没有登录,那么就重定向 /login。 接口概览 ?...周边 react-router.Lifecycle.js 分析 Lifecycle.js react-router 内部被多次使用,例如: react-router.Redirect react-router.Prompt...如果你已经开始使用 react hooks,那直接使用 react-router hooks api 即可,不需要再使用 withRouter 了。 ? 6.14....useRouteMatch 实现也比较简单,因为这些数据,都存储 RouterContext 或 HistoryContext ,直接提取即可。

    1.1K30

    「源码解析 」这一次彻底弄懂react-router路由原理

    笔者个人感觉学习react-router,有助于我们学习单页面应用(spa)路由跳转原理,让我们理解从history.push,组件页面切换全套流程,使我们面试时候不再为路由相关问题发怵,废话不说...这里我们参考history-4.7.2版本,最新版本api可能有些出入,但是原理都是一样解析history过程,我们重点关注setState ,push ,handlePopState,listen...什么时候绑定litener, 我们接下来React-Router代码中会介绍。...使得我们可以页面组件props获取location ,match等信息。 4 Redirect-没有符合路由,那么重定向 重定向组件, 如果来路由匹配上,会重定向对应路由。...同样会执行history方法重定向。 五 总结 + 流程分析 总结 history提供了核心api,如监听路由,更改路由方法,已经保存路由状态state。

    4K40

    用 Auth0 保证 React 应用安全

    React Demo") 选择 Single Page Web Applications 作为其类型 点击 Create 按钮完成这个过程 创建应用之后,Auth0 会将你重定向其 Quick Start...该方法包括了重定向用户一个托管 Auth0 网站上登录页面,该页面通过 你 Auth0 dashboard (https://manage.auth0.com/) 可以方便快捷地定制化。...然后,该函数用 auth0-js parseHash 方法处理结果 isAuthenticated: 检查用户 ID token 是否过期 login: 初始化登录过程,将用户重定向登录页面 logout...首先定义一个 HomePage组件展示已登录用户名信息,以及告知未登录用户去登录信息。同时,文件 App 组件负责决定根据路由哪些子组件必须渲染。...如果你想学习更多的话,Auth0 官方文档也提供了各种前端框架整合方法: ?

    1.8K30

    react-router 使用与优化

    react-router 可以创建单页应用。可以将组件映射到路由上,将对应组件渲染想要渲染位置(根据路径变化渲染出组件)。...window.location.replace("/") 表示重定向某个页面,重定向相当于代替之前路由,之前那个路由不能后退回来。...Redirect 组件通常放在 Route 组件最后面,当页面都匹配不到时就重定向 / 页面。...当我们访问 /user/123456 时就可以跳转到 ID 为 123456 用户页面。 react-router 可以通过 props.match.params 获取到传入参数值。...静态服务器环境,无法直接更改应用程序状态。在这种情况下,可以 context 特性中标记要渲染结果。如果出现了 context.url,就说明应用程序需要重定向

    3.2K10

    前端路由Router原理

    在前端开发,我 们可以使⽤路由设置访问路径,并根据路径与组件映射关系切换组件显示,⽽这整个过程都是同 ⼀个⻚⾯实现,不涉及⻚⾯间跳转,这也就是我们常说单⻚应⽤(spa)。...在前端开发 ,我们可以使⽤路由设置访问路径,并根据路径与组件映射关系切换组件显示,⽽这整个过程都 是同⼀个⻚⾯实现,不涉及⻚⾯间跳转,这也就是我们常说单⻚应⽤(spa)。...react-router 提供最基本路由功能,实际使用时候我们不会直接安装 react-router,而是根据应用运行环境选择安装 react-router-dom(浏览器中使用)或 react-router-native...MemoryRouter 把 URL 历史记录保存在内存 (不读取、不写入地址栏)。测试和非浏览器环境很有用,如 React Native。...基本使用 react-router 奉行一切皆组件思想,路由器-「Router」、链接-「Link」、路由-「Route」、独占-「Switch」、重定向-「Redirect」都以组件形式存在 import

    2.7K20

    我是如何在React-Router 6.10最新版本实现约定式路由

    3.2.1 history完全废除 在过去v5如果我们需要进行命令式跳转行为,需要使用到useHistory 。...navigate是v6版本对于跳转行为重要设计,v6如果需要不使用hook进行页面跳转,那么我们需要使用createHashRouter或createBrowserRouter 创建路由router...通过递归方式遍历整个store,确保每一个route都能被放置自己父级children。...我们处理source数据时,还应该对于children做特殊处理,一般来讲如果需要在source.tsx额外声明children,初衷一般是将children插入现有children后边而不是替换...React-router v6.10自动化路由系统,我们可以使用约定式路由架构和keep-alive最佳实践来搭建一个高效、自动化路由系统。

    4.2K20

    React-Router

    介绍 ​ react-router被分为以下几部分: react-router是浏览器和原生应用通用部分。 react-router-dom是用于浏览器。...MemoryRouter ​ 主要用在ReactNative这种非浏览器环境,因此直接将URLhistory保存在了内容。StaticRouter主要用于服务器端渲染。...如果多个Route匹配,那么这些RouteComponent都会被渲染。 Route组件属性: path - 字符串类型,它值就是用来匹配url。...Redirect组件 ​ 当这个组件被渲染时,location会被重写为Redirectto制定新location。...它一个用途是登陆重定向,比如用户点击登录按钮并通过验证之后,将页面跳转到个人主页。 Switch组件 ​ 渲染匹配地址(location)第一个或者。

    2.4K20

    使用React-Router实现前端路由鉴权

    然后我们就可以App.js里面引入React-Router做路由跳转了,注意我们浏览器上使用是react-router-dom,新版React-Router将核心逻辑层和展示层分开了,核心逻辑会处理路由匹配等...RN相关路由监听和跳转 实际使用时,我们一般不需要引用react-router,而是直接用react-router-dom就行,因为它自己会去引用react-router。...模块划分 虽然我们跳转实现了,但是所有人都可以访问任何页面,我们前面的需求是要根据登录角色限制访问页面的,写代码前,我们先来思考下应该怎么做这个。...,如果有就直接渲染Route组件,如果没有就返回某个页面,可以是登录页或者后台首页,具体根据自己项目需求来。...真实项目中一般是登录时候后端API会返回当前用户角色,然后前端将这个权限信息保存在一些状态管理工具里面,比如Redux。

    2.4K41

    React Router v4 完全指北

    那些习惯于多页应用最终用户,期望一个SPA应该包含以下特性: 应用每个视图都应该有对应唯一URL用来区分视图。...那么,如果有人想进入 /admin页面,他们会被要求先登录。然而,我们保护路由之前还需要考虑一些事情。 重定向 类似服务端重定向, 会将history堆栈的当前路径替换为新路径。.../admin页面,他们会被重定向 /login页面。...当前路径信息是通过state传递,若用户信息验证成功,用户会被重定向回初始路径。子组件,你可以通过 this.props.location.state获取state信息。...否则,用户将重定义 /login登录页面。这样做好处是,定义更明确,而且 PrivateRoute可以复用。

    2.8K20

    UNIX高级环境编程 第三次实验 实现带参数简单Shell

    因此token为时,设置相应flag:0为正常参数,1代表输入重定向,2代表输出重定向。...之后,下一个读入参数token会根据flag值设置重定向输入文件名rfile和重定向输出文件名wfile。...**file:**如果参数file包含/,则就将其视为路径名,否则就按 PATH环境变量,它所指定各目录搜寻可执行文件 excel 、execv都是需要给出可执行文件名绝对路径,execlp、...fork创建子进程若出错则打印出错信息,pid=0表示子进程,若有重定向输入输出,则在redirect_stdin或 redirect_stdout处理,execvp填入可执行文件参数,子进程开始执行...所以本实验如果不做特殊处理,cd命令不会成功运行,需要手动编写一个简单函数,思 路也很简单,对于一般cd 路径名,我们可以采用chdir函数切换到相应目录,注意一般shell有cd 、cd ~,两种形式

    93820

    输入输出和管道及相关命令

    搜索文件和目录命令find:find ~ 路径名列表递归地向下遍历目录树以寻找与搜寻条件相匹配文件时,系统将把满足条件每一个文件显示终端屏幕上。...dog.wolf.baby -exec rm {} 删除找到文件之前先确认:find - - name dog1.wolf.girl -ok rm {}将输出重定向文件Unix或LInux...将wolf目录中文件列表写入当前目录dog.wolf文件:ls -l wolf/* > dog_wolf。...将当前日期和时间添加到dog_wolf文件:date >> dog_wolf从/etc目录开始搜索名为passwd文件,屏幕上只显示标准错误信息,而将标准输出重定向输出到一个叫output.std...将命令1标准输出重定向为命令2标准输入,标准错误信息(stderr)并不通过管道传播,第1个命令错误信息也不会传给第二个命令,第2个命令错误信息也不会传给下一个命令等。

    1.1K40

    React路由

    前端路由功能:让用户从一个视图(页面)导航另一个视图(页面) 前端路由是一套映射规则,React,是 URL路径 与 组件 对应关系 使用React路由简单来说,就是配置 路径和组件(配对)...render 如果 path 没有匹配上,那么会 render null 如果没有指定 path,那么一定会被渲染 exact 说明, exact 表示精确匹配某个路径 一般来说,如果路径配置了.../, 都需要配置 exact 属性 Switch与404 通常,我们会把Route包裹在一个Switch组件 Switch组件,不管有多少个路由规则匹配到了,都只会渲染第一个匹配组件...React,配置嵌套路由非常简单,因为Route就是一个组件,可以在任意想配置地方进行配置 但是配置嵌套路由时候,需要对路径进行处理,必须要先匹配到父级路由,才能匹配到子路由 /...可以匹配 /users/1 /users/2 /users/xxx 组件,通过props可以接收到路由参数

    2K20
    领券