В общем для всех ищущих ответ. Каждое правило работает только в своей "юрисдикции", описанной в pattern. Если правило сделать для ^/api, то именно на этом роуте будет работать правило login. А так как я перехожу по ссылкам, не попадающим под правило (главная, например, либо страница логина /login, где, собственно, проходит авторизация), то из сессии не вытягивается токен, подходящий под правило login. Иными словами - firewall'ы работают только там, где вы написали в паттерне, больше нигде