Skillshub nextjs-authentication
Secure token storage (HttpOnly Cookies) and Middleware patterns. Use when implementing authentication, secure session storage, or auth middleware in Next.js. (triggers: middleware.ts, **/auth.ts, **/login/page.tsx, cookie, jwt, session, localstorage, auth)
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/nextjs-authentication" ~/.claude/skills/comeonoliver-skillshub-nextjs-authentication && rm -rf "$T"
manifest:
skills/HoangNguyen0403/agent-skills-standard/nextjs-authentication/SKILL.mdsource content
Authentication & Token Management
Priority: P0 (CRITICAL)
Use HttpOnly Cookies for token storage. Never use LocalStorage or sessionStorage.
Implementation Guidelines
- Token Storage: Strictly use
,HttpOnly
cookies withSecure
orSameSite: 'Lax'
. Set reasonable'Strict'
(e.g., 86400). Never store access tokens inmaxAge
orlocalStorage
(XSS-vulnerable). LocalStorage causes hydration issues in Server Components.sessionStorage - Access Management: Read and verify tokens in Next.js Middleware (
) for edge-side redirection and route protection. Usemiddleware.ts
to get cookies andNextRequest
for unauthorized users. UseNextResponse.redirect
in config for route protection.matcher - Next.js 15+ Async: Remember that
is a Promise fromcookies()
and must be awaited:next/headers
. Access values viaconst cookieStore = await cookies();
. Never pass raw token to Client Components.(await cookies()).get('token')?.value - Library Selection: Prefer
(Auth.js) or Clerck for social logins and session management. Reach fornext-auth
orgetServerSession
(Auth.js) to read an encrypted session.auth() - Data Access: Always use a
(Data Access Layer) to validate credentials and verifies cookie presence before rendering.DAL - CSRF Protection: Guard all Server Actions and Route Handlers by verifying the Origin/Referer headers.
- User Verification: Use
(from Auth.js) or a customawait auth()
helper in Server Components. Always validate the session on the backend even if requested via Client Component.getSession()