I’m developing a web site with [email protected] and Auth.js([email protected]).
I have already configured the provider with the following code, I can sign in with “Sign in” button correctly.
auth.ts
import NextAuth from 'next-auth'
import Cognito from 'next-auth/providers/cognito'
export const { handlers, signIn, signOut, auth } = NextAuth({
providers: [Cognito],
})
app/login/page.tsx
import { auth, signIn } from '@/auth'
export default async function Login() {
return (
<form
action={async () => {
'use server'
return await signIn('cognito')
}}
>
<button type="submit">Sign in</button>
</form>
)
}
Problems
I want to use middleware to protect all pages and redirect to Amazon cognito(IdP) sign-in page automatically.
However, the following code does not work. (Stay protected page without session and does not redirect)
Is there any way to redirect to the Cognito sign-in page?
Note: Already I can redirect to /login in my application, but I want to remove a redundant click for the user.
middleware
import { signIn, auth } from "@/auth"
export default auth((request) => {
if (!request.auth) {
signIn('cognito')
}
})
export const config = {
matcher: ["/((?!api|_next/static|_next/image|favicon.ico|login).*)"],
}
error log
ReadonlyRequestCookiesError: Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options
at Proxy.callable (webpack-internal:///(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js:22:15)
at signIn (webpack-internal:///(middleware)/./node_modules/next-auth/lib/actions.js:53:65)
⨯ unhandledRejection: ReadonlyRequestCookiesError: Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options
at Proxy.callable (webpack-internal:///(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js:22:15)
at signIn (webpack-internal:///(middleware)/./node_modules/next-auth/lib/actions.js:53:65)
⨯ unhandledRejection: ReadonlyRequestCookiesError: Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options
at Proxy.callable (webpack-internal:///(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js:22:15)
at signIn (webpack-internal:///(middleware)/./node_modules/next-auth/lib/actions.js:53:65)
GET / 200 in 46ms