thirdweb으로 web3 로그인을 추가하는 방법 ✨
소개
web3 로그인을 사용하는 이유는 무엇입니까?
이더리움으로 로그인하면 지갑을 사용하여 안전하게 로그인하고 백엔드에서 지갑을 확인할 수 있습니다! 매우 인기 있는 JWT 표준을 사용하는 Thirdweb Auth를 사용할 것입니다! JWT(JSON Web Token)는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준입니다.
설정
Next.js 앱 만들기
이 안내서에는 Next typescript starter template을 사용하겠습니다.
가이드를 따라가는 경우 다음을 사용하여 프로젝트를 만들 수 있습니다.
Next TypeScript template thirdweb CLI 사용:
npx thirdweb create --next --ts
Next.js 앱이 이미 있는 경우 다음 단계에 따라 시작할 수 있습니다.
@thirdweb-dev/react
및 @thirdweb-dev/sdk
및 ethers
thirdweb 인증 설정
먼저 thirdweb 인증 패키지를 설치해야 합니다.
npm i @thirdweb-dev/auth # npm
yarn add @thirdweb-dev/auth # yarn
이제
auth.config.ts
라는 파일과 다음을 생성합니다.import { ThirdwebAuth } from "@thirdweb-dev/auth/next";
export const { ThirdwebAuthHandler, getUser } = ThirdwebAuth({
privateKey: process.env.PRIVATE_KEY as string,
domain: "example.org",
});
웹사이트 URL로 도메인을 업데이트하고 개인 키에 대해 새
.env.local
파일을 만들고 이름이 PRIVATE_KEY
인 새 변수를 추가합니다. 지갑에서 export your private key 방법을 알아보세요.인증 api를 구성하려면 auth라는 새 폴더
pages/api
와 그 안에 파일[...thirdweb].ts
을 만듭니다! 여기서 우리는 우리가 만든 thirdwebHandler를 내보내야 합니다!import { ThirdwebAuthHandler } from "../../../auth.config";
export default ThirdwebAuthHandler();
마지막으로
_app.tsx
파일 내에서 authConfig 소품을 ThirdwebProvider
에 추가합니다. <ThirdwebProvider
desiredChainId={activeChainId}
authConfig={{
authUrl: "/api/auth",
domain: "example.org",
loginRedirect: "/",
}}
>
<Component {...pageProps} />
</ThirdwebProvider>
프런트엔드 구축
내부
pages/index.tsx
는 다음과 같이 return 문을 업데이트합니다.return (
<div>
{address ? (
<button onClick={() => login()}>
Sign in with Ethereum
</button>
) : (
<ConnectWallet />
)}
</div>
);
useAddress
및 useLogin
후크를 사용하여 로그인 기능과 사용자 주소를 가져옵니다. const address = useAddress();
const login = useLogin();
그러면 우리 사이트에 Ethereum을 사용한 로그인이 추가됩니다! 이제 사용자가 존재하는지 확인해야 합니다. 이를 위해 다음과 같이
useUser
후크에서 사용자를 가져옵니다. const user = useUser();
그리고 사용자가 존재하는지 확인하고 존재한다면 다음을 반환합니다.
if (user.user) {
return (
<div>
<p>You are signed in as {user.user.address}</p>
<button>Validate user</button>
</div>
);
}
유효성 검사를 위한 API 생성
이제 백엔드에서 사용자 세부 정보(주소)를 가져오는 API를 만들어 봅시다! 따라서
validate.ts
안에 pages/api
라는 새 파일을 만들고 다음을 추가합니다.import type { NextApiRequest, NextApiResponse } from "next";
import { getUser } from "../../auth.config";
const handler = async (req: NextApiRequest, res: NextApiResponse) => {
if (req.method === "POST") {
const thirdwebUser = await getUser(req);
if (thirdwebUser?.address) {
return res.status(200).json({
message: `You are signed in as ${thirdwebUser.address}`,
});
}
return res.status(401).json({ message: "Account not validated" });
}
return res.status(405).json({ message: "Method not allowed" });
};
export default handler;
여기에서 우리는 thirdweb의 getUser 메서드를 사용하여 사용자의 주소를 가져오고, 주소가 있으면 "당신은 주소로 로그인했습니다"라는 메시지를 보냅니다.
프런트엔드에서 API 호출
다음과 같이
handleClick
에 pages/index.tsx
라는 새 함수를 만듭니다. const handleClick = async () => {
try {
const response = await fetch("/api/validate", {
method: "POST",
});
const data = await response.json();
alert(data.message);
} catch (error) {
console.log(error);
}
};
그리고 이 함수를 유효성 검사 버튼의 onClick에 연결합니다.
<button onClick={handleClick}>Validate user</button>
결론
이 가이드를 통해 놀라운 Dapps에 web3 로그인을 추가하는 방법을 배웠기를 바랍니다!
유용한 링크
GitHub repo
Thirdweb Auth
Reference
이 문제에 관하여(thirdweb으로 web3 로그인을 추가하는 방법 ✨), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/avneesh0612/how-to-add-web3-sign-in-with-thirdweb-8pm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)