这是魔法链接的工作流程:
当用户输入电子邮件地址时,Magic会向该电子邮件地址发送验证链接以验证该电子邮件。当您单击“确认您的电子邮件”时,将显示一个模态框以登录应用程序。当用户单击“登录到应用程序”时,将生成并存储公共+私有
密钥在浏览器上。这意味着用户拥有自己的身份。此密钥对嵌入式iframe中,无法访问开发人员,以保护用户的私钥。
由于这些密钥是在用户客户端上生成而不是在magic服务器上生成的,因此Magic将无法查看这些密钥。
Magic SDK将使用该私钥生成auth token。此auth token称为DID token
(分散式标识符)。解码此令牌后,您可以查看用户的电子邮件地址以及发行时间。本质上,DID令牌是您的数字签名。如果我们将此令牌存储在我们的数据库中,并且如果我们的数据库被黑客攻击,恶意用户将无法访问我们的私钥。然后,我们将此DID令牌传递给服务器以检查用户
Magic将用户的电子邮件和ID存储在indexedDb中。它还为自己存储一些cookie,以正常运行
要使用魔法,您需要使用 magic-sdk
。您可以设置魔法客户端 ✨
import { Magic } from "magic-sdk";
const createMagic = () => {
return (
new Magic(process.env.API_KEY)
);
};
export const magic = createMagic();
然后使用这个客户端:
// 你已经输入并捕获了电子邮件
if (email) {
尝试 {
// this store public/private key on browser and returns the DID token
const didToken = await magic.auth.loginWithMagicLink({
email,
});
if (didToken) {
// once you have the token, using metadata, you can add another propertis
// iat, exp, roles etc
// then sign this with jwt
// store the token in browser
}