For my new project Tuxedo Mask, hide your E-Mail Address I switched to next-auth. And what should I say? That's a library, I realy like. You can clearly say, they had the developer in mind. What did I say? developer? Even my unborn child can configure it.
Here an example:
In this little "game" https://looty.vercel.app, looty the lootbox.
I have this code in the api/auth/[nextauth].js (which is the entrypoint for next-auth):
import NextAuth from 'next-auth'; import GithubProvider from 'next-auth/providers/github'; import DiscordProvider from 'next-auth/providers/discord'; export default NextAuth({ providers: [ GithubProvider({ clientId: process.env.GITHUB_ID, clientSecret: process.env.GITHUB_SECRET, // https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps scope: 'read:user', }), DiscordProvider({ clientId: process.env.DISCORD_APP_ID, clientSecret: process.env.DISCORD_APP_SECRET, }), ], secret: process.env.SECRET, session: { strategy: 'jwt' }, callbacks: { async signIn({user, account, profile, email, credentials}) { return true; }, // async redirect({ url, baseUrl }) { return baseUrl }, // async session({ session, token, user }) { return session }, // async jwt({ token, user, account, profile, isNewUser }) { return token } }, theme: { colorScheme: 'light', }, debug: false, });
And finally in the _app.js
import {SessionProvider} from 'next-auth/react'; import '../styles/globals.css'; function MyApp({Component, pageProps}) { return ( <SessionProvider> <Component {...pageProps} /> </SessionProvider> ); } export default MyApp;
then you can work with useSession for example
import {useSession} from 'next-auth/react' const {data: session, status} = useSession();
And thats mostly it. For this little guy it worked perfectly. next-auth
has tons of configurations and you can even add your own authentication layer.
When working with authentication for nextjs please consider to use next-auth and support this project.
They have a lot of providers and you can use your own Database too.
https://github.com/nextauthjs/next-auth
https://www.npmjs.com/package/next-auth
Thanks.
Top comments (0)