npm 包 Apollo-Passportjs-React 使用教程

阅读时长 9 分钟读完

前言

随着前端技术的发展,前端的工作范围已经不再局限于 DOM 操作和 CSS 样式了,越来越多的业务逻辑需要前端来实现。传统的前后端分离架构已经越来越不能满足业务需求,GraphQL 技术的出现,给前后端的交互带来了全新的解决方案。但是,GraphQL 本身并不能解决身份鉴权的问题,这时候,我们可以选择使用 Passport.js 来完成身份鉴权的工作。

而 Apollo-Passportjs-React 则是一个封装了 Passport.js 和 Apollo 前端框架的 npm 包,它不仅可以帮助我们完成身份鉴权的工作,还可以提供一套完整的前后端交互方案,使用起来非常方便快捷。在本篇文章中,我们将详细介绍这个 npm 包的使用方法。

安装

要使用 Apollo-Passportjs-React,首先我们需要通过 npm 进行安装,可以通过以下命令进行安装:

使用

1. 后端配置

在后端我们主要要做的事情是使用 Passport.js 进行身份鉴权。我们可以使用以下代码进行身份鉴权的配置:

-- -------------------- ---- -------
-- -----
----- -------- - -------------------
----- ------------- - ----------------------------------

-- ----- ---- -----
----- ----- - -
  - --- ---- --------- -------- --------- -------- --
  - --- ---- --------- ------- --------- -------- -
-

-- --------
---------------- --------------
  -- ------------------------
  -
    -------------- -----------
    -------------- ----------
  --
  ---------- --------- ----- -- -
    -- ------
    ----- ---- - ------------ -- ---------- --- ---------
    -- ------- -
      ------ ---------- ------ - -------- -------- --
    -
    -- -------------- --- --------- -
      ------ ---------- ------ - -------- ------ --
    -
    ------ ---------- -----
  -
--

-- -------
----------------------------- ----- -- -
  ---------- --------
--

-- --------
----------------------------- ----- -- -
  ----- ---- - ------------ -- ---- --- ---
  ---------- -----
--

2. 前端配置

在前端,我们可以借助 Apollo 完成与后端的交互。这里我们假设后端已经使用 express 和 express-session 对用户进行登录状态维护。下面是一个简单的前端代码示例:

-- -------------------- ---- -------
------ ----- ---- -------
------ - --------- --- - ---- ----------------
------ - ------------ ---------- - ---- ------------------
------ - --------- - ---- -------------

----- ------ - ----
  ----- ----- -
    -- -
      --
      --------
    -
  -
-

------ ----- --- - -- -- -
  ----- -------- - -------------
  ----- ------- - ------------
  ----- - ----- ------- - - ----------------

  -- --------------
  -- ------------------ --- -------- -- ----------------- --- ----------- -- --------- -- --------- -
    -------------------------
    ------ ----
  -

  ------ -
    ---- ----------------
      --------- - -
        ---- ----------------------
          -- ------------------------ -----------------------
        ------
      - - -
        ---------- --
      --
    ------
  -
-

在此示例中,我们通过调用 useStateuseEffect 对用户登录状态进行维护,如果用户未登录,则会被重定向到登录页面。

3. 使用 Apollo-Passportjs-React

我们已经在后端配置好了身份鉴权,前端也使用了 Apollo 完成了与后端的交互,接下来我们需要将它们组合起来,完成一个完整的前后端交互系统。

在前端,我们需要使用 ApolloProvider 包装应用程序,并使用 Auth 组件在需要登录的页面上保护路由:

-- -------------------- ---- -------
------ ----- ---- -------
------ - -------------- - ---- ----------------
------ - ---- - ---- -------------------------
------ - ------------- -- ------- ------- ------ -------- - ---- ------------------
------ - ------ - ---- ----------------
------ - --------- - ---- -------------
------ - ------------ - ---- ----------------
------ - --- - ---- -------

------ ----- ---- - -- -- -
  --------------- ----------------
    --------
      --------
        ------ --------------
          ---------- --
        --------
        ------ -----------------
          ------------- --
        --------
        --- -- ---- ----------- ---
        ------
          ------ ---------
            ---- --
          --------
        -------
        --------- ------ --
      ---------
    ---------
  -----------------
-

而后端,我们需要使用 passport.initialize()passport.session() 中间件对用户进行登录状态维护,并使用 apollo-passportjs-react 包装 Apollo 服务:

-- -------------------- ---- -------
----- ------- - ------------------
----- ------- - --------------------------
----- ---------- - ----------------------
----- -------- - -------------------
----- - ------------ - - --------------------------------
----- - --------------- - - ------------------
----- - -------------- - - ----------------------------------
----- -------- - -------------------------------
----- --------- - --------------------------

----- ------ - --- --------------
  ------- -----------------
    ---------
    ---------
  ---
  -------- -- ---- --- -- -- -- ---- --- --
--

-- --- -------
----- --- - ---------

-- -- ---------------- - ---------------------------------
--------------------------
------------------------------- --------- ---- ---

-- -- -------- ---
------------------------------
---------------------------

-- -- --------------- ---
-----------------
  ------- ----------------
  ------- ------
  ------------------ -----
---

-- -- ----------------------- -- ------ --
----- ------ - --- ---------------------- -
  ---------
  -------- --- -- -----------
--

-- - ------ - ---------- --- ------- -
------------------------ --- --

-- ----
----- ---- - ---------------- -- ----
---------------- -- -- -
  ------------------- ----- -- --------------------------
--

到这里,我们已经将前端和后端完整地组合在了一起,实现了一个完整的前后端交互系统。

结语

本文旨在介绍如何使用 Apollo-Passportjs-React 库,在实际应用中,我们也可以根据自己的需求进行二次开发,以满足不同的业务需求。GraphQL 和 Passport.js 都是非常实用的技术,它们的结合可以帮助我们快速构建出一个前后端交互的系统。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600556d781e8991b448d3af3

纠错
反馈