大家好,在此纠纷中,您将经历一个简单的过程,即在下一个JS 应用程序中使用 clerk 。
注意:出于学习目的,如果您没有从头开始构建任何身份验证,请首先学习基本的身份验证工作,并至少构建一个或两个认证页面。
文员不过是第三方身份验证服务。店员身份验证是控制对数字平台或应用程序访问的安全方法。它确保只有授权用户才能使用这些服务。将其视为俱乐部入口处的虚拟弹跳器 - 检查IDS(登录凭据)以验证允许谁允许。店员身份验证使用密码,生物特征(例如指纹)和单个签名来确认用户的身份等技术。这样可以防止未经授权的访问和保护智能信息。就像锁和钥匙一样,店员身份验证可以使数字空间免受不必要的访客的范围,同时让合适的人享受好处。
## LET'S START
步骤1 :创建下一个JS应用程序!
使用命令npx create-next-app ./folderName
,生成基本的下一个JS应用程序和文件夹结构。确保您输入与我一样。
生成文件夹结构后,我们可以移至下一步。
步骤2 :在店员中创建帐户!
访问THIS链接并创建一个新帐户。
现在它将您将您重定向到申请页面,看起来像这样
店员提供了19种以上的身份验证方法。
其中一些是:
- github
- Apple
- mircosoft 等等... 给应用程序命名并选择所需的方法。 单击创建应用程序
步骤3 :选择要使用的框架
本教程适用于下一个JS,所以我将仅选择下一步。
否则提供5个以上的框架。
步骤4 :创建.env文件
现在在项目的根文件夹中创建.env文件,然后添加 clerk_secret_key 和 next_public_clerk_publishable_keykey
在您的情况下,这些密钥会有所不同,因此请确保您仅添加。
注意:remeber在.gitignore文件中添加.env文件。
步骤5 :安装店员
根据您选择的框架,在您的项目中安装文员。
在这种情况下,我们接下来要去,如果您使用相同的话,请确保输入相同的。
npm install @clerk/nextjs
步骤6 :安装店员
为了在整个应用程序上安装店员,我们需要导入clerkprovider并将其包裹在我们的主应用程序周围。
转到./“ projectName”/app/layout.tsx
layout.tsx
最初
import './globals.css'
import type { Metadata } from 'next'
import { Inter } from 'next/font/google'
const inter = Inter({ subsets: ['latin'] })
export const metadata: Metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
}
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<body className={inter.className}>{children}</body>
</html>
)
}
用clerkprovider包装应用程序后。
我们需要从 @/clerk/nextjs导入 * clerkprovider *作为命名导入。
import { ClerkProvider } from '@clerk/nextjs'
import './globals.css'
import type { Metadata } from 'next'
import { Inter } from 'next/font/google'
const inter = Inter({ subsets: ['latin'] })
export const metadata: Metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
}
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<ClerkProvider>
<html lang="en">
<body className={inter.className}>{children}</body>
</html>
</ClerkProvider>
)
}
步骤7 :添加中间件
为了在身份验证时保护我们的项目或应用程序,我们需要使用中间件。
在项目的根目录中创建一个文件 middleware.ts 复制并粘贴follwiing代码。
import { authMiddleware } from "@clerk/nextjs";
export default authMiddleware({});
export const config = {
matcher: ["/((?!.*\\..*|_next).*)", "/", "/(api|trpc)(.*)"],
};
步骤8 :添加注册和登录页
*请注意 *
店员需要一个派友文件夹结构。
i。创建2个名为“(auth)”和“(root)”的文件夹。
ii。内部(root),将新文件创建为page.tsx。此文件是应用程序的主要文件。
iii。内部(auth),创建另一个名为“(路由)”的文件夹。
iv。内部(路由)创建2个文件夹作为“登录”和“注册”。
v。内部登录和注册分别创建名为[[...登录]]和[[...注册]]的新文件夹。
vi。在登录和注册中创建命名为page.tsx的文件。
现在分别复制代码。
for page.tsx在[[...登录]]中:
import { SignIn } from "@clerk/nextjs";
export default function Page() {
return <SignIn />;
}
for page.tsx在[[...注册]]:
import { SignUp } from "@clerk/nextjs";
export default function Page() {
return <SignUp />;
}
最后,您的auth文件夹结构应该看起来像:
步骤9 :“添加.env文件中的环境变量”
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/
恭喜!!! *您已成功地将业务员与您的应用程序集成在一起 *
!(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0d0cuhw17zmd2nyzc2nv.png)
为了将登录/注册模式或盒子集中,我们也需要为Auth添加布局。
*每个路由组都可以有自己的布局。
添加布局,您可以执行以下操作:
i。创建一个名为layout.tsx的文件。空文件将使Next.js抛出错误,因为下一步期望布局文件返回函数。
错误
复制代码:
export default function AuthLayout({
children
}: {
children: React.ReactNode
}) {
return (
<div className="flex items-center justify-center h-full">{children}</div>
)
}
// this file is responsible for the layout of entire auth page.