Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/cookie.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,11 @@ module.exports = class Cookie {
}

if (this.secure === 'auto') {
if (request.protocol === 'https') {
if (request.protocol === 'https' || request.hostname === 'localhost') {
this.secure = true
} else {
this.sameSite = 'lax'
this.partitioned = false
this.secure = false
}
}
Expand Down
2 changes: 1 addition & 1 deletion lib/fastifySession.js
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ function fastifySession (fastify, options, next) {

const cookieSessionId = getCookieSessionId(request)
const saveSession = shouldSaveSession(request, cookieSessionId, saveUninitializedSession, rollingSessions)
const isInsecureConnection = cookieOpts.secure === true && request.protocol !== 'https'
const isInsecureConnection = cookieOpts.secure === true && request.protocol !== 'https' && request.hostname !== 'localhost'
const sessionIdWithPrefix = hasCookiePrefix ? `${cookiePrefix}${session.encryptedSessionId}` : session.encryptedSessionId
if (!saveSession || isInsecureConnection) {
// if a session cookie is set, but has a different ID, clear it
Expand Down
2 changes: 2 additions & 0 deletions test/cookie.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,7 @@ test('should set session cookie secureAuto', async (t) => {
t.after(() => { fastify.close() })

const response = await fastify.inject({
authority: 'fastify-session.test',
url: '/'
})

Expand Down Expand Up @@ -345,6 +346,7 @@ test('should set session cookie secureAuto change SameSite', async (t) => {
t.after(() => { fastify.close() })

const response = await fastify.inject({
authority: 'fastify-session.test',
url: '/'
})

Expand Down
1 change: 1 addition & 0 deletions test/session.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1231,6 +1231,7 @@ test('Override global options with regenerate', async t => {
fastify.register(fastifyCookie)
fastify.register(fastifySession, {
...DEFAULT_OPTIONS,
saveUninitialized: true,
cookie: {
secure: false,
maxAge: 42,
Expand Down
2 changes: 1 addition & 1 deletion test/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const fastifySession = require('../lib/fastifySession')
const TestStore = require('./TestStore')

const DEFAULT_SECRET = 'cNaoPYAwF60HZJzkcNaoPYAwF60HZJzk'
const DEFAULT_OPTIONS = { secret: DEFAULT_SECRET }
const DEFAULT_OPTIONS = { secret: DEFAULT_SECRET, saveUninitialized: false }
const DEFAULT_SESSION_ID = 'Qk_XT2K7-clT-x1tVvoY6tIQ83iP72KN'
const DEFAULT_ENCRYPTED_SESSION_ID = `${DEFAULT_SESSION_ID}.B7fUDYXU9fXF9pNuL3qm4NVmSduLJ6kzCOPh5JhHGoE`
const DEFAULT_COOKIE_VALUE = `sessionId=${DEFAULT_ENCRYPTED_SESSION_ID};`
Expand Down