我无法得到req.cookies,即使req.headers它返回空对象并且未定义。
我尝试使用'request.credentials'valueinclude和same-origin,但都不起作用。
我可以req.cookies从中获取getServerSideProps,但我不想在每个页面上都执行此操作或为此创建 HOF。
那么,问题是为什么req.cookiesincontext是空对象?
import { ApolloServer } from 'apollo-server-micro';
import { getToken } from 'next-auth/jwt'
import Cors from 'micro-cors';
const schema = makeExecutableSchema({
typeDefs,
resolvers
});
const server = new ApolloServer({
schema,
context: async (ctx) => {
const token = await getToken({req: ctx.req, secret: process.env.JWT_SECRET})
return {};
},
playground: {
settings: {
'request.credentials': 'include'
}
},
});
const cors = …Run Code Online (Sandbox Code Playgroud) 我们正在我们的网站上进行 OTP 身份验证。因此,为了获得授权,访问者在输入中输入他的电话号码,我们向他发送一个 OPT 号码,他再次输入发送的选项,然后如果匹配,我们向他发送他的帐户凭据(令牌、用户 ID)(如果存在),或者我们创建新的,我们希望使用 next-auth 在会话中保存该凭证。
这是我到目前为止所得到的:
export default NextAuth({
providers: [
CredentialsProvider({
credentials: {
phoneNumber: { label: 'PhoneNumber', type: 'text' },
code: { label: 'Code', type: 'text' },
type: { label: 'Type', type: 'text' },
},
async authorize(credentials, req) {
const user_needs = await requests.auth.signInEnterOtp(
credentials.phoneNumber,
credentials.code,
credentials.type
)
return user_needs.ok ? true : null
},
}),
],
callbacks: {
async session({ session, user, token }) {
return session
},
},
secret: process.env.JWT_SECRET,
})
Run Code Online (Sandbox Code Playgroud)
我需要保存user_needs会话中的内容,但如何将其传递 …
我正在开发一个 NextJS 应用程序,使用 next-auth 并使用 Google Oauth 2 作为其身份验证提供程序。生产版本正在 Heroku 上运行。当尝试登录我的生产版本时,Google OAuth 为我提供了"Error 400: redirect_uri_mismatch". 通常,这很容易修复,除非确切的 uri 已在 Cloud Console 中注册。
。
我还尝试添加我的 uri 的许多不同排列,但这没有帮助。
\n\n问题中的错误:
\nError 400: redirect_uri_mismatch\n\nYou can\'t sign in to this app because it doesn\'t comply with Google\'s OAuth 2.0 policy.\n\nIf you\'re the app developer, register the redirect URI in the Google Cloud Console.\n\nRequest Details\nIf you\xe2\x80\x99re the app developer, make sure that these request details comply …Run Code Online (Sandbox Code Playgroud) heroku oauth-2.0 google-oauth google-cloud-platform next-auth
我使用 NextAuth 与不和谐提供程序进行登录,并且需要将 userID 添加到会话对象中。为此,我使用会话回调,但用户对象未定义。当我尝试将 userID 添加到会话对象时,出现如下错误:
[next-auth][错误][JWT_SESSION_ERROR] https://next-auth.js.org/errors#jwt_session_error 无法读取未定义的属性(读取“id”)
事实上,似乎用户对象未定义,但我没有任何解决方案。
export default NextAuth({
providers: [
DiscordProvider({
clientId: process.env.DISCORD_CLIENT_ID,
clientSecret: process.env.DISCORD_CLIENT_SECRET,
authorization: { params: { scope: 'identify' } }
})
],
session: {
jwt: true
},
jwt: {
secret: process.env.JWT_SECRET
},
callbacks: {
async session({session, user}) {
session.user.id = user.id
return session
},
async jwt(token) {
return token
}
}
})
Run Code Online (Sandbox Code Playgroud) https://next-auth.js.org/errors#get_authorization_url_error "ikm" 长度必须至少为一个字节 { message: '"ikm" 长度必须至少为一个字节', stack: 'TypeError: "ikm " 长度必须至少为 1 个字节\n' +
我正在关注这个示例: https://vercel.com/guides/nextjs-multi-tenant-application
我有一个连接了 next-auth 的 Next.js 项目。但我对下一个身份验证如何存储会话感到困惑。
在我的 Chrome cookie 上,我发现了这个 session-token: eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..3_1xKir8Uf2dwky2._druNa1meJemDgeeYw5o6S840s_sW4DShuEu1w34RVAe8cyHm8-ryK5smM1ecKo1KZ_2faPUNpQTwMEUr-AW0Lo_0Oei_n9VIu7xTSET6W0ANdrL2Xg9ZUG9EziZYaW0VFEu.nPkQMkGcrvFRN5BIVvG_ng,但它的有效负载是空的。
所以我的问题是:
在本地计算机上的终端中使用以下命令时,应用程序在生产模式下尝试在 Next.js 应用程序中使用 next-auth 登录时失败:
`纱线构建&&纱线启动`
在终端观察到的错误信息如下:
TypeError [ERR_INVALID_URL]: Invalid URL
at new NodeError (node:internal/errors:372:5)
at URL.onParseError (node:internal/url:553:9)
at new URL (node:internal/url:629:5)
at Object.redirect (/Users/name/Documents/GitHub/app/node_modules/next-auth/core/lib/default-callbacks.js:16:65)
at createCallbackUrl (/Users/name/Documents/GitHub/app/node_modules/next-auth/core/lib/callback-url.js:20:35)
at init (/Users/name/Documents/GitHub/app/node_modules/next-auth/core/init.js:132:48)
at AuthHandlerInternal (/Users/name/Documents/GitHub/app/node_modules/next-auth/core/index.js:98:28)
at AuthHandler (/Users/name/Documents/GitHub/app/node_modules/next-auth/core/index.js:335:34)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async NextAuthHandler (/Users/name/Documents/GitHub/app/node_modules/next-auth/next/index.js:38:20) {
input: 'undefined/home',
code: 'ERR_INVALID_URL'
}
Run Code Online (Sandbox Code Playgroud)
如果我在终端中使用以下命令在开发模式下运行,则不会出现该问题:
`纱线开发`
这是我的 [...nextauth].ts 文件:
import NextAuth from "next-auth";
import type { NextAuthOptions } from "next-auth";
import GoogleProvider from "next-auth/providers/google";
import FacebookProvider from "next-auth/providers/facebook";
import EmailProvider from "next-auth/providers/email";
import { …Run Code Online (Sandbox Code Playgroud) 我正在使用 Next-Auth v4.22.1 和 NextJS 13。
我正在尝试在 [...nextauth].js jwt 回调中注销用户。
我知道signOut()仅在客户端可用。如果在服务器端使用它,我们将收到“ReferenceError:窗口未定义”错误。
我对 /api/auth/signout 的 POST 请求不起作用。
我收到错误
nextauth-signout-requests.js - Fetch Error SyntaxError: Unexpected token E in JSON at position 0
API handler should not return a value, received object.
API resolved without sending a response for /api/nextauth-signout-requests, this may result in stalled requests.
Run Code Online (Sandbox Code Playgroud)
我来自 nextauth-signout-requests.js 的 POST 代码:
const NextAuthSignOutReq = async (req, res) => {
if (req.method === 'POST') {
try {
// Sign out the user
const signOut …Run Code Online (Sandbox Code Playgroud) 我如何以编程方式在服务器端的 Next-Auth 中注销用户?
/api/auth/[...nextauth].js 里面有一个 jwt 函数:
const callbacks = {
async jwt ({ token, user }) {
// How to sign out a user?
signOut(); <--- can't use this on the server side
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,signOut() 函数仅适用于客户端。如果在这里使用它会产生错误。
我已经阅读了非常简单的 Next Auth REST API 页面,但无法对“/api/auth/signout”进行 POST 调用。如果这是正确的方法,有人可以向我展示一些工作代码吗?它需要任何类型的授权令牌吗?
https://next-auth.js.org/getting-started/rest-api
谢谢!
我现在正在使用 next.js 构建一个前端,它使用 next-auth 通过 GitHub OAuth 进行身份验证。
Next-auth 处理包括会话在内的所有身份验证,并将所有内容保存到数据库中,在我的例子中是 Postgres DB。
我现在还想通过 REST API 将我的前端连接到 Spring Boot 后端服务器,该 API 处理一些文件访问。我可以简单地将会话令牌包含到授权标头中,并将我的后端连接到 Postgres DB,并检查是否存在具有此令牌的会话。
但这种做法似乎并不正确。保护我的后端的最佳方法是什么?我的后端如何检查用户是否使用 GitHub 登录?
next-auth ×10
next.js ×9
reactjs ×3
javascript ×2
next.js13 ×2
google-oauth ×1
heroku ×1
jwt ×1
node.js ×1
oauth-2.0 ×1
security ×1
spring-boot ×1