Backend PR-1: Sanctum SPA Configuration & CORS Setup #211
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Configures Laravel Sanctum for SPA authentication mode and sets up CORS to allow credential-based requests from the frontend domain. This replaces insecure localStorage token storage with httpOnly cookie-based authentication.
Related Issues
Fixes #209
Part of: SecPal/frontend#208
Changes
Configuration
localhost:5173,localhost:3000, production domains)databasetocookiefor SPA authenticationEnvironment Variables
Added to
.env.example:SANCTUM_STATEFUL_DOMAINS- Frontend domains for stateful authSESSION_DRIVER=cookie- Cookie-based sessionsSESSION_HTTP_ONLY=true- JavaScript cannot access cookiesSESSION_SAME_SITE=lax- CSRF protectionCORS_ALLOWED_ORIGINS- Frontend domainsCORS_SUPPORTS_CREDENTIALS=true- Allow cookies in CORS requestsCORS_ALLOWED_HEADERS- Include X-XSRF-TOKEN for CSRFTesting
SanctumSpaConfigTestAcceptance Criteria
config/sanctum.phpconfigured withSANCTUM_STATEFUL_DOMAINS.env.exampleupdated with required Sanctum variablesconfig/cors.phpallows credentials (supports_credentials: true)auth:sanctummiddleware (already in place)Security Considerations
✅ httpOnly cookies: Token inaccessible to JavaScript (XSS protection)
✅ sameSite=lax: CSRF attack mitigation
✅ Explicit CORS origins: No wildcard
*when credentials enabled✅ CSRF token endpoint:
/sanctum/csrf-cookiefor state-changing requestsNext Steps
Testing Commands
References