fix(broadcasting): Exclude CSRF verification from broadcast auth routes #294
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.
Problem
Broadcasting authentication routes (
/broadcasting/authand/broadcasting/user-auth) fail withTokenMismatchExceptionwhenVerifyCsrfTokenmiddleware is included in the web middleware group.These routes receive POST requests from Pusher/Soketi JavaScript clients during private/presence channel authentication. The JavaScript client has no awareness of Hypervel's CSRF protection system and cannot include CSRF tokens in its requests.
Solution
Exclude broadcasting routes from CSRF verification by calling
VerifyCsrfToken::except()when routes are registered.Laravel's implementation:
Laravel uses
->withoutMiddleware(VerifyCsrfToken::class)on both routes. However, this can't be ported to Hypervel because thewithout_middlewareroute option operates at a different stage in the middleware resolution process:Since Hypervel's route-level exclusion can't remove middleware from inside groups, we use
VerifyCsrfToken::except()which adds paths to the middleware's internal exclusion list.Why This Matters
For CSRF protection to work properly,
VerifyCsrfTokenmust be in the web middleware group. However, this causes broadcasting authentication to fail:The fix ensures broadcasting routes can continue to use the web middleware stack (for session/auth) while being excluded from CSRF verification.
Changes