System.Web.Security.FormsAuthentication использует куки:
FormsAuthentication.SetAuthCookie(userName, rememberMe);
Сессия там не используется. Конечно, если вы хотите больше, чем имя пользователя и isAuthenticated, вам понадобится другой способ сохранить это состояние. Ваши единственные реальные альтернативы - это куки или URL, ни один из которых не является приемлемым по другим причинам.
Сеанс не является злом, особенно если учесть ваши варианты размещения данных сеанса на общем сервере или в экземпляре SQL Server.
Сессией, безусловно, можно злоупотреблять, и ваша масштабируемость пострадает, но я бы не отказался от сессии полностью, если бы не было других первостепенных проблем.
Если вам необходимо полностью отказаться от сеанса, вам придется либо воссоздавать состояние при каждом вызове, как правило, дорогое предложение, либо вам придется создавать собственный механизм хранения состояний, который возвращает нас к стандартным альтернативам хранения сеансов ASP.NET .