gpt4 book ai didi

next.js - 使用自定义凭据提供程序进行 NextAuth 不创建 session

转载 作者:行者123 更新时间:2023-12-03 16:58:49 80 4
gpt4 key购买 nike

我正在尝试在我的 NextJs 应用程序中实现 NextAuth。我正在关注官方文档。但出于某种原因,似乎用户 session 对象不是在登录时生成的。
这是我的 pages/api/auth/[...nextauth].js 文件中的代码

import NextAuth from "next-auth";
import Providers from "next-auth/providers";
import axios from "axios";


export default (req, res) =>
NextAuth(req, res, {
providers: [
Providers.Credentials({
id: 'app-login',
name: APP
authorize: async (credentials) => {
console.log("credentials_:", credentials);
try {
const data = {
username: credentials.username,
password: credentials.password

}
// API call associated with authentification
// look up the user from the credentials supplied
const user = await login(data);
if (user) {
// Any object returned will be saved in `user` property of the JWT
return Promise.resolve(user);
}

} catch (error) {
if (error.response) {

console.log(error.response);
Promise.reject(new Error('Invalid Username and Password combination'));
}
}



},

}),
],
site: process.env.NEXTAUTH_URL || "http://localhost:3000",
session: {
// Use JSON Web Tokens for session instead of database sessions.
// This option can be used with or without a database for users/accounts.
// Note: `jwt` is automatically set to `true` if no database is specified.
jwt: true,

// Seconds - How long until an idle session expires and is no longer valid.
maxAge: 1 * 3 * 60 * 60, // 3 hrs

// Seconds - Throttle how frequently to write to database to extend a session.
// Use it to limit write operations. Set to 0 to always update the database.
// Note: This option is ignored if using JSON Web Tokens
updateAge: 24 * 60 * 60, // 24 hours
},
callbacks: {
// signIn: async (user, account, profile) => { return Promise.resolve(true) },
// redirect: async (url, baseUrl) => { return Promise.resolve(baseUrl) },
// session: async (session, user) => { return Promise.resolve(session) },
// jwt: async (token, user, account, profile, isNewUser) => { return Promise.resolve(token) }
},
pages: {
signIn: '/auth/credentials-signin',
signOut: '/auth/credentials-signin?logout=true',
error: '/auth/credentials-signin', // Error code passed in query string as ?error=
newUser:'/'
},

debug: process.env.NODE_ENV === "development",
secret: process.env.NEXT_PUBLIC_AUTH_SECRET,
jwt: {
secret: process.env.NEXT_PUBLIC_JWT_SECRET,
}
});






const login = async data => {
var config = {
headers: {
'Content-Type': "application/json; charset=utf-8",
'corsOrigin': '*',
"Access-Control-Allow-Origin": "*"
}
};
const url = remote_user_url;
const result = await axios.post(url, data, config);
console.log('result', result);
return result;
};

什么我在这里不明白?谢谢您的帮助。

最佳答案

我最终设法解决了这个问题。由于为自定义凭据提供程序指定了“id”和“name”选项,出现了错误
我已经删除了它们,代码现在正在运行。

关于next.js - 使用自定义凭据提供程序进行 NextAuth 不创建 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64244115/

80 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com