如何使用Node.js和React.js防止访问管理员页面
在许多网站上,直到终端用户通过登录证明自己的真实性之前,可供其访问的内容是有限的。在开发MERN堆栈应用程序时,当服务器连接到客户端时,我们可能希望限制用户访问的页面,除非他已登录。在本文中,让我们来看看如何使用React.js和Node.js限制访问管理页面。
先决条件:
- 函数组件
- React Hooks
- React Router V6
- 基本CRUD操作
客户端所需模块:
- axios
- react-router-dom
服务器端所需模块:
- express
- cors
客户端和服务器设置:
步骤1: 使用以下命令创建npm仓库:
步骤2: 使用以下命令创建一个新的React客户端项目:
步骤3: 使用以下命令在当前目录下创建一个服务器文件:
步骤4: 切换到client文件夹中的src文件夹,并使用以下命令删除所有文件:
步骤5: 在src文件夹中创建一个pages文件夹
步骤6: 在src文件夹中创建App.js、index.js和PrivateRoute.js文件。
步骤7: 在pages文件夹中创建Home.js和Admin.js文件。
步骤8: 在客户端文件夹中安装 Axios 和 react-router-dom
步骤9: 在服务器端安装express和cors
项目结构:
项目中的文件结构如下所示。
步骤10: 编辑index.js文件以链接HTML文件和React库。
步骤11: 编辑Home.js,展示一个基本的主页
步骤12: 编辑 Admin.js文件以展示一个基本的管理页面
步骤13: 创建一个 私有路由 ,阻止未经授权的用户访问网页。任何需要受保护的组件都可以使用该路由。私有路由本质上通过向服务器发起 API 调用来检查用户的真实性。如果验证成功,路由将呈现相应的组件,否则将重定向到主页。
步骤14: 整合 所有组件到 App.js 文件中。我们使用路由来在主页和管理员页面之间进行导航。我们将创建一个 按钮组件 来实现 登录 和 登出 。 为了实现导航,我们创建了 链接标签 。 为了在之后的重新渲染之间保持登录状态,我们使用 本地存储 。
步骤15: 创建 服务器 并监听8000端口上的传入请求。我们创建了一个中间件功能来验证用户。这个中间件功能可以应用到任何路由。
运行应用程序的步骤:
在客户端文件夹中运行以下命令
在基础目录下运行以下命令
输出结果:
如果一切正常,我们应该能够看到:
- 当我们登出和登录时,在服务器端会出现以下输出
- 当我们注销并登录时,客户端会输出以下内容
最终输出: