Page MenuHomePhabricator

Issue "anonymous" sessions for logged-out users
ClosedPublic

Authored by epriestley on Jan 23 2014, 6:18 PM.
Tags
None
Referenced Files
F18835170: D8043.id.diff
Oct 26 2025, 1:58 PM
F18835019: D8043.diff
Oct 26 2025, 12:41 PM
F18832008: D8043.diff
Oct 25 2025, 6:10 PM
F18807883: D8043.id18194.diff
Oct 19 2025, 3:37 AM
F18752410: D8043.id18210.diff
Oct 4 2025, 3:11 PM
F18734564: D8043.id.diff
Sep 30 2025, 10:56 PM
F18723927: D8043.id.diff
Sep 30 2025, 2:22 AM
F18710783: D8043.diff
Sep 29 2025, 2:52 AM
Subscribers

Details

Summary

Ref T4339. Ref T4310. Currently, sessions look like "afad85d675fda87a4fadd54", and are only issued for logged-in users. To support logged-out CSRF and (eventually) external user sessions, I made two small changes:

  • First, sessions now have a "kind", which is indicated by a prefix, like "A/ab987asdcas7dca". This mostly allows us to issue session queries more efficiently: we don't have to issue a query at all for anonymous sessions, and can join the correct table for user and external sessions and save a query. Generally, this gives us more debugging information and more opportunity to recover from issues in a user-friendly way, as with the "invalid session" error in this diff.
  • Secondly, if you load a page and don't have a session, we give you an anonymous session. This is just a secret with no special significance.

This does not implement CSRF yet, but gives us a client secret we can use to implement it.

Test Plan
  • Logged in.
  • Logged out.
  • Browsed around.
  • Logged in again.
  • Went through link/register.

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

src/applications/base/controller/PhabricatorController.php
39

For consistency with D8041.