Neo4j 轉接器
資源
設定
安裝
npm install @auth/neo4j-adapter neo4j-driver
環境變數
NEO4J_URI=bolt://127.0.0.1
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=abc
設定
./auth.ts
import NextAuth from "next-auth"
import neo4j from "neo4j-driver"
import { Neo4jAdapter } from "@auth/neo4j-adapter"
const driver = neo4j.driver(
process.env.NEO4J_URI,
neo4j.auth.basic(process.env.NEO4J_USERNAME, process.env.NEO4J_PASSWORD)
)
const neo4jSession = driver.session()
export const { handlers, auth, signIn, signOut } = NextAuth({
providers: [],
adapter: Neo4jAdapter(neo4jSession),
})
綱要
節點標籤
使用以下節點標籤。
- 使用者
- 帳戶
- 工作階段
- 驗證權杖
關係
使用以下關係和關係標籤。
(:使用者)-[:HAS_ACCOUNT]->(:帳戶)
(:使用者)-[:HAS_SESSION]->(:工作階段)
屬性
此綱要適用於在 Neo4j 中使用,並基於我們主要的 模型。請在那裡查看節點屬性。關係沒有屬性。
索引
最佳索引會因您的 Neo4j 版本(例如,社群版或企業版)而異,並且在您節點上擁有自己的其他資料時也會有所不同。以下是基本建議索引。
- 對於社群版和企業版,請建立約束和索引
CREATE CONSTRAINT user_id_constraint IF NOT EXISTS
ON (u:User) ASSERT u.id IS UNIQUE;
CREATE INDEX user_id_index IF NOT EXISTS
FOR (u:User) ON (u.id);
CREATE INDEX user_email_index IF NOT EXISTS
FOR (u:User) ON (u.email);
CREATE CONSTRAINT session_session_token_constraint IF NOT EXISTS
ON (s:Session) ASSERT s.sessionToken IS UNIQUE;
CREATE INDEX session_session_token_index IF NOT EXISTS
FOR (s:Session) ON (s.sessionToken);
2a. 僅對於社群版才建立單屬性索引
CREATE INDEX account_provider_index IF NOT EXISTS
FOR (a:Account) ON (a.provider);
CREATE INDEX account_provider_account_id_index IF NOT EXISTS
FOR (a:Account) ON (a.providerAccountId);
CREATE INDEX verification_token_identifier_index IF NOT EXISTS
FOR (v:VerificationToken) ON (v.identifier);
CREATE INDEX verification_token_token_index IF NOT EXISTS
FOR (v:VerificationToken) ON (v.token);
2b. 僅對於企業版才建立複合節點鍵約束和索引
CREATE CONSTRAINT account_provider_composite_constraint IF NOT EXISTS
ON (a:Account) ASSERT (a.provider, a.providerAccountId) IS NODE KEY;
CREATE INDEX account_provider_composite_index IF NOT EXISTS
FOR (a:Account) ON (a.provider, a.providerAccountId);
CREATE CONSTRAINT verification_token_composite_constraint IF NOT EXISTS
ON (v:VerificationToken) ASSERT (v.identifier, v.token) IS NODE KEY;
CREATE INDEX verification_token_composite_index IF NOT EXISTS
FOR (v:VerificationToken) ON (v.identifier, v.token);