Skip to content

Commit 8a41753

Browse files
feat: remove restriction to use secure cookies in localhost (#4300)
* feat: remove restriction to use secure cookies in localhost * changeset * pnpm lock fix * Update .changeset/grumpy-deers-rest.md * Update .changeset/grumpy-deers-rest.md --------- Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
1 parent 6f54841 commit 8a41753

File tree

2 files changed

+15
-20
lines changed

2 files changed

+15
-20
lines changed

.changeset/grumpy-deers-rest.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@blitzjs/auth": patch
3+
---
4+
5+
fix: remove restriction to use `secure` cookies in localhost / during development following spec in [developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#restrict_access_to_cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#restrict_access_to_cookies)

packages/blitz-auth/src/server/auth-sessions.ts

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import {Socket} from "net"
4343
import {UrlObject} from "url"
4444
import {formatWithValidation} from "../shared/url-utils"
4545

46-
export function isLocalhost(req: any): boolean {
46+
export function isLocalhost(req: IncomingMessage): boolean {
4747
let {host} = req.headers
4848
let localhost = false
4949
if (host) {
@@ -575,37 +575,27 @@ const setHeader = (res: ServerResponse, name: string, value: string) => {
575575
}
576576
}
577577

578-
const setSessionCookie = (
579-
req: IncomingMessage,
580-
res: ServerResponse,
581-
sessionToken: string,
582-
expiresAt: Date,
583-
) => {
578+
const setSessionCookie = (res: ServerResponse, sessionToken: string, expiresAt: Date) => {
584579
setCookie(
585580
res,
586581
cookie.serialize(COOKIE_SESSION_TOKEN(), sessionToken, {
587582
path: "/",
588583
httpOnly: true,
589-
secure: global.sessionConfig.secureCookies && !isLocalhost(req),
584+
secure: global.sessionConfig.secureCookies,
590585
sameSite: global.sessionConfig.sameSite,
591586
domain: global.sessionConfig.domain,
592587
expires: expiresAt,
593588
}),
594589
)
595590
}
596591

597-
const setAnonymousSessionCookie = (
598-
req: IncomingMessage,
599-
res: ServerResponse,
600-
token: string,
601-
expiresAt: Date,
602-
) => {
592+
const setAnonymousSessionCookie = (res: ServerResponse, token: string, expiresAt: Date) => {
603593
setCookie(
604594
res,
605595
cookie.serialize(COOKIE_ANONYMOUS_SESSION_TOKEN(), token, {
606596
path: "/",
607597
httpOnly: true,
608-
secure: global.sessionConfig.secureCookies && !isLocalhost(req),
598+
secure: global.sessionConfig.secureCookies,
609599
sameSite: global.sessionConfig.sameSite,
610600
domain: global.sessionConfig.domain,
611601
expires: expiresAt,
@@ -847,11 +837,11 @@ async function createNewSession(
847837
new Date(),
848838
global.sessionConfig.anonSessionExpiryMinutes as number,
849839
)
850-
setAnonymousSessionCookie(req, res, anonymousSessionToken, expiresAt)
840+
setAnonymousSessionCookie(res, anonymousSessionToken, expiresAt)
851841
setCSRFCookie(req, res, antiCSRFToken, expiresAt)
852842
setPublicDataCookie(req, res, publicDataToken, expiresAt)
853843
// Clear the essential session cookie in case it was previously set
854-
setSessionCookie(req, res, "", new Date(0))
844+
setSessionCookie(res, "", new Date(0))
855845
setHeader(res, HEADER_SESSION_CREATED, "true")
856846

857847
return {
@@ -903,11 +893,11 @@ async function createNewSession(
903893
privateData: JSON.stringify(newPrivateData),
904894
})
905895

906-
setSessionCookie(req, res, sessionToken, expiresAt)
896+
setSessionCookie(res, sessionToken, expiresAt)
907897
setCSRFCookie(req, res, antiCSRFToken, expiresAt)
908898
setPublicDataCookie(req, res, publicDataToken, expiresAt)
909899
// Clear the anonymous session cookie in case it was previously set
910-
setAnonymousSessionCookie(req, res, "", new Date(0))
900+
setAnonymousSessionCookie(res, "", new Date(0))
911901
setHeader(res, HEADER_SESSION_CREATED, "true")
912902

913903
return {
@@ -955,7 +945,7 @@ async function refreshSession(
955945
const publicDataToken = createPublicDataToken(sessionKernel.publicData)
956946

957947
const expiresAt = addYears(new Date(), 30)
958-
setAnonymousSessionCookie(req, res, anonymousSessionToken, expiresAt)
948+
setAnonymousSessionCookie(res, anonymousSessionToken, expiresAt)
959949
setPublicDataCookie(req, res, publicDataToken, expiresAt)
960950
} else if (global.sessionConfig.method === "essential" && "sessionToken" in sessionKernel) {
961951
const expiresAt = addMinutes(new Date(), global.sessionConfig.sessionExpiryMinutes as number)

0 commit comments

Comments
 (0)