为React应用程序选择正确认证方法的教程

244 阅读5分钟

为你的React应用程序选择正确的认证方法

访问管理是大多数物理基础设施安全的基石。人们应该只允许受信任的和有关系的个人进入,而那些没有同样权限的人应该被拒绝进入。这种安全方法通常是通过用户认证来实现的,也被称为检查用户凭证以验证其身份。

认证过程通常是在用户名和密码的帮助下进行的--这是最基本的形式。每个人都知道这一点:你创建一个账户,选择一个用户名和密码,然后在今后每次需要登录该账户时使用这些凭证。这里的关键假设是,只有正确的用户才会有正确的凭证,并没有考虑到恶意活动、密码共享或黑客攻击。因此,现在发生的大多数重大数据泄露事件都是由这种原始的认证方法引起的。

这些攻击如此普遍的一个重要原因是,大多数人并不试图为他们创建的每个账户设置一个独特、复杂的密码,因为这更难记住。因此,他们选择了简单、重复的密码。然而,这是一种不好的做法,因为一个密码泄露可能导致多个账户因相同的密码而被黑客攻击。因此,一个人的整个在线账户组合可能面临风险。这种风险指向了对更严格的认证的需求。

为你的应用选择最佳认证方法

认证可以通过几种不同的方式完成,用户可以从中选择一些选项。例如,公司正越来越多地实施无密码认证,这消除了丢失或被盗密码的潜在安全风险。无密码 "一词指的是人们可以使用的几种不同的认证技术,以取代传统的静态密码。

你可能已经体验过无密码认证。每当你收到一次性密码(OTP)或 "神奇链接 "到你的电子邮件或电话号码来登录一个账户时,你就在体验无密码认证。正如你所看到的,这种做法越来越受欢迎,因为人们不再需要创建多个复杂的密码 -- 他们只需要让他们的中央账户尽可能安全,然后用这些账户来接收OTP和神奇链接。

你可能想在你的应用程序中实现无密码认证。在这篇文章中,我们将使用Frontegg来演示如何以一种简单的方式来创建这种登录方法,需要更少的代码。

使用Frontegg在React中实现安全登录流程

Frontegg是一个伟大的免费平台,它允许开发者提供各种各样的用户管理功能。其中一个功能是安全认证,它包括各种认证类型,如无密码登录、SSO等。Frontegg是开发者的一个优秀资源。它是基于多租户架构设计的,是该领域中最好的,并提供了许多独特的功能,全部都是免费的。

在你创建了Frontegg的账户后,它将提供一个仪表板,详细介绍它所提供的所有服务,比如说,认证和授权。因为我们需要认证服务,我们将点击它,各种选择会根据我们的操作出现。在这个演示中,我们将选择无密码登录选项。这个阶段是你可以配置样式和任何其他与CSS有关的方面。

我们还可以选择社交登录,如Facebook、谷歌、Github等。

让我们开始把登录面板集成到我们的应用程序中。

我们将使用React的嵌入式登录。

在第一阶段,我们将创建一个React应用程序。要生成到达命令,请使用这个命令。

npx create-react-app  react-app-with-frontegg

只需在文件夹创建后导航到新创建的文件夹,安装必要的工具和依赖性。你可以通过使用这些命令去文件夹中安装这些依赖项,并安装它们。

cd react-app-with-frontegg

npm install @frontegg/react react-router-dom

现在我们有了必要的代码,让我们正确实现登录面板。

Frontegg Provider必须被包裹在我们的根组件中才能正确工作。在index.js文件中包含以下代码。

import React from  'react';\
import ReactDOM from  'react-dom';\
import App from  './App';\
import  './index.css';

import { FronteggProvider } from  '@frontegg/react';

const contextOptions = {\
baseUrl: 'https://app-yvs5knxxwv8i.frontegg.com',\
};

ReactDOM.render(\
 <FronteggProvider contextOptions={contextOptions}>\
 <App />\
 </FronteggProvider>,\
 document.getElementById('root')\
);

我们需要揭示用户上下文和认证状态,使尚未认证的用户有可能被发送到登录页面。你必须把这段代码插入app.js文件中。

import React from  'react';\
import { useAuth } from  '@frontegg/react'

function  App() {\
 const { user, isAuthenticated } = useAuth();\
 return (\
 <div className='App'>\
      {isAuthenticated && (\
 <div>\
 <img src={user.profilePictureUrl} alt={user.name} />\
 <span>{user.name}</span>\
 </div>\
      )}\
 </div>\
  );\
}

export default App;

一旦一切完成,只需使用以下命令启动npm。

npm start

注册屏幕将在http://localhost:3000/account/sign-up

登录屏幕将在http://localhost:3000/account/login

如果你已经登录了,请到http://localhost:3000/account/logout,然后注销。

总结

创建安全的登录流程可能是非常具有挑战性的,因为在选择正确的登录面板和认证方法时要考虑许多因素。如果你没有正确地考虑到认证过程,你可能会因为过于依赖用户来确保安全而损害了用户的数据。这种风险就是为什么我们在这篇文章中使用Frontegg涵盖了Node应用程序的无密码实现。你可以快速建立一个精彩的认证功能,包括社交登录等有用的功能,而且你可以在你的终端上用最少的编码完成.