标签: next-auth

如何在下一个身份验证中添加自定义“检查您的电子邮件”页面?(验证请求)

我试图在那里有自己的文字和风格。在文档(https://next-auth.js.org/configuration/options#pagesverifyRequest: '/auth/verify-request' )中,它说我们可以通过添加但没有示例来添加自定义页面

我尝试使用此代码创建自定义 verify-request.js 文件https://github.com/nextauthjs/next-auth/blob/1838e43b275fa36b1eb7bd046eead6795cfd0f2d/src/server/pages/verify-request.js但它不适用于我...

有一个示例或教程如何做到这一点吗?我尽我所能地搜索了一切,但一无所获。

reactjs next.js next-auth

7
推荐指数
1
解决办法
3751
查看次数

不支持的证书用途 - NextAuth - 本地主机中的 SSL - 节点服务器

我按照本教程设置https本地开发机器:https://dev.to/nakib/using-https-on-next-js-local-development-server-bcd

这是我使用的代码:

const { createServer } = require("https");
const { parse } = require("url");
const next = require("next");
const fs = require("fs");
const port = 3000;
const dev = process.env.NODE_ENV !== "production";
const app = next({ dev });
const handle = app.getRequestHandler();

const httpsOptions = {
    key: fs.readFileSync('/some/path/to/rootCA-key.pem'),
    cert: fs.readFileSync('/some/path/to/rootCA.pem')
};



app.prepare().then(() => {
    createServer(httpsOptions, (req, res) => {
        const parsedUrl = parse(req.url, true);
        handle(req, res, parsedUrl);
    }).listen(port, (err) => {
        if (err) throw err;
        console.log("ready - …
Run Code Online (Sandbox Code Playgroud)

authentication openssl node.js next.js next-auth

7
推荐指数
1
解决办法
2684
查看次数

如何将带有 next-auth 的 next.js 前端安全地连接到 springboot 后端

我现在正在使用 next.js 构建一个前端,它使用 next-auth 通过 GitHub OAuth 进行身份验证。

Next-auth 处理包括会话在内的所有身份验证,并将所有内容保存到数据库中,在我的例子中是 Postgres DB。

我现在还想通过 REST API 将我的前端连接到 Spring Boot 后端服务器,该 API 处理一些文件访问。我可以简单地将会话令牌包含到授权标头中,并将我的后端连接到 Postgres DB,并检查是否存在具有此令牌的会话。

但这种做法似乎并不正确。保护我的后端的最佳方法是什么?我的后端如何检查用户是否使用 GitHub 登录?

security reactjs spring-boot next.js next-auth

7
推荐指数
0
解决办法
773
查看次数

Laravel 的 Next-Auth 凭证提供程序 - 请求失败,状态代码 419

我有一个安装了 Next-Auth 的 NextJS 前端和一个使用 Sanctum 的 Laravel 后端当我尝试使用 Next-Auth 的登录功能登录时,它给了我这个错误:

Request failed with status code 419
Run Code Online (Sandbox Code Playgroud)

419 与 CSRF 令牌有关,但我在调用登录方法之前通过调用 sainttum/csrf-cookie 路由来设置令牌

[...nextauth.js]

Request failed with status code 419
Run Code Online (Sandbox Code Playgroud)

apiClient.js

CredentialsProvider
        ({
            name: 'Email and Password',
            credentials: {
                email: {label: "Email", type: "email", placeholder: "Your Email"},
                password: {label: "Password", type: "Password"}
            },
            async authorize({email, password}, req) {
                await apiClient.get("/sanctum/csrf-cookie");
                const user = await apiClient.post('/customer/login', {
                    email: email,
                    password: password,
                });

                if (user) {
                    return user
                } else {
                    return …
Run Code Online (Sandbox Code Playgroud)

laravel next.js csrf-token laravel-sanctum next-auth

7
推荐指数
2
解决办法
7703
查看次数

使用 Next.js 中间件的 Next auth v4

我使用 Next.js 和 next auth v4 进行凭据身份验证。

我想要做的是在中间件中为我的 API 调用添加全局验证,以便在 API 调用会话之前进行测试。如果会话不为空,则调用必须成功通过,否则如果会话为空,则处理未经授权的错误消息并重定向到登录页面。

我还想为登录页面和其他不需要检查身份验证的页面添加受保护的路由和不受保护的路由。

这是我的代码: [...nextauth].js

import NextAuth from "next-auth"
import CredentialsProvider from "next-auth/providers/credentials";
import api from './api'

export default NextAuth({
    providers: [
        CredentialsProvider({
          name: "Credentials",
          async authorize(credentials, req) {
            const {username,password} = credentials    
            const user = await api.auth({
                username,
                password,
            })

            if (user) {
              return user
            } else {
              return null
              
            }
          }
        })
    ],
    callbacks: {
        async jwt({ token, user, account }) {
            let success = user?.id > 0 …
Run Code Online (Sandbox Code Playgroud)

javascript authorization next.js next-auth

7
推荐指数
1
解决办法
3万
查看次数

使用Next-auth时从API返回错误信息

是否可以允许 next-auth 从 API 返回错误并从客户端传递它们?

例如,如果用户的电子邮件或密码不正确,API 将专门返回。在我们的移动应用程序上,这效果很好。尽管在网站上,我们使用的是 Next-auth。使用文档中的凭据示例,将返回值更改为对象会很棒。

import CredentialsProvider from "next-auth/providers/credentials"
providers: [
  CredentialsProvider({
    name: "Credentials",
 
    credentials: {
      username: { label: "Username", type: "text", placeholder: "jsmith" },
      password: {  label: "Password", type: "password" }
    },
    async authorize(credentials, req) {
      const user = { id: 1, name: "J Smith", email: "jsmith@example.com" }

      if (user) {
        // Any object returned will be saved in `user` property of the JWT
        return user
      } else {
        // Return an object that will pass …
Run Code Online (Sandbox Code Playgroud)

javascript next.js next-auth

7
推荐指数
1
解决办法
9848
查看次数

NextAuth、NextJS - getToken 在中间件函数中始终返回 null

环境


  • NextJS:12.2.2
  • NextAuth:4.10.3(最新)
    • 提供者:凭证
  • 浏览器:谷歌浏览器
  • 节点:LTS

问题


大家好

我使用 NextAuth 通过凭证提供程序和策略 jwt 进行身份验证,但函数 getToken 在我的中间件中始终返回 null,而 NextAuthOptions 中的 jwt 回调不返回 null

我检查了cookie存储中的令牌并尝试解码令牌,结果解码仍然正确

变量环境 NEXTAUTH_SECRET 已添加到文件 .env.local 中

代码


src/page/api/auth/[...nextauth].ts

export const decode = async (data: any) => {
  const { secret, token } = data;
  const verify = jwt.verify(token, secret) as JWT;
  return verify;
};
export const encode = async (data: any) => {
  const { secret, token } = data;

  const payload = {
    username: token.username,
    email: token.email, …
Run Code Online (Sandbox Code Playgroud)

middleware jwt next.js next-auth

6
推荐指数
1
解决办法
3383
查看次数

如何读取 [...nextauth] signIn() 回调中的附加参数?

根据Next Auth 文档,我可以/authorize通过 的第三个参数将其他参数传递到端点signIn()

他们展示了两个例子:

signIn("identity-server4", null, { prompt: "login" }) // always ask the user to re-authenticate
signIn("auth0", null, { login_hint: "info@example.com" }) // hints the e-mail address to the provider
Run Code Online (Sandbox Code Playgroud)

但是,没有完整的工作示例,我无法读取我在/api/auth/[...nextauth].js. 任何人都可以告诉我如何读取这些附加参数,例如signIn() callback?

这是一个简单的例子来说明我的意思:

/index.jsx

import { useState } from "react"
import { signIn } from "next-auth/react"

export default function EmailLink() {
    const [email, setEmail] = useState('')

    const submitUser = (e) => {
        e.preventDefault()
        signIn('email', 
            {email, callbackUrl: '/dashboard', redirect: …
Run Code Online (Sandbox Code Playgroud)

javascript jwt reactjs next.js next-auth

6
推荐指数
1
解决办法
2881
查看次数

如何使用 NextAuth.js 和 AWS Cognito 完全销毁客户端会话

我正在使用 Next.js 和 NextAuth.js 进行亚马逊 cognito 设置,我的问题是,当我在注销后立即单击登录链接时,我的用户会直接登录,而不会要求提供凭据。

我的 [...nextauth].ts 看起来像这样:

import NextAuth from 'next-auth';
import CognitoProvider from 'next-auth/providers/cognito';

export const authOptions = {
  providers: [
    CognitoProvider({
      clientId: process.env.COGNITO_CLIENT_ID || '',
      clientSecret: process.env.COGNITO_CLIENT_SECRET || '',
      issuer: process.env.COGNITO_ISSUER_URL,
    }),
  ],
  debug: process.env.NODE_ENV !== 'production' ? true : false,
};

export default NextAuth(authOptions);
Run Code Online (Sandbox Code Playgroud)

对于身份验证,我使用下一个帮助程序方法登录和退出:

interface HomeProps {
  appTitle: string;
}

const Home: NextPage<HomeProps> = ({ appTitle }) => {
  const { data: session, status } = useSession();

  if (status === 'authenticated') {
    return …
Run Code Online (Sandbox Code Playgroud)

authentication amazon-cognito next.js next-auth

6
推荐指数
1
解决办法
5450
查看次数

NextAuth:如何实现自定义Provider?

按照NextAuth.js 文档,我成功地实现了登录 github,这似乎非常简单。

页面/auth/[...nextauth].js

import NextAuth from "next-auth";
import GithubProvider from "next-auth/providers/github";

export const authOptions = {
  providers: [
    GithubProvider({
      clientId: process.env.GITHUB_ID,
      clientSecret: process.env.GITHUB_SECRET,
    }),
  ],

};
export default NextAuth(authOptions);
Run Code Online (Sandbox Code Playgroud)

然后将应用程序包装起来SessionProvider,就可以开始了。

import { SessionProvider } from "next-auth/react";
import { Session } from "next-auth";
import type { AppProps } from "next/app";
import "../styles/globals.css";

export default function App({
  Component,
  pageProps,
}: AppProps<{
  session: Session;
}>) {
  return (
    <SessionProvider session={pageProps.session}>
      <Component {...pageProps} />
    </SessionProvider>
  );
}
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用 …

github reactjs next.js next-auth

6
推荐指数
1
解决办法
1万
查看次数