Я лично предпочитаю декларативный подход (т. Е. Подход на основе определения местоположения web.config). Это облегчает внесение изменений при необходимости, не требуя повторного развертывания кода.
Ни при каких обстоятельствах я не рекомендую вызывать User.IsInRole () со статической строкой, как вы делаете в своем примере; используйте декларативный подход web.config, если ваша аутентификация не меняется.
Идти по маршруту, который вы предлагаете в своем последнем абзаце, вполне нормально, но я бы порекомендовал его только в ситуациях, когда ваша информация аутентификации может часто меняться, т. Е. Для приложений CMS или аналогичных им подобных.
Короче говоря, я не думаю, что есть "лучшая практика" по этому вопросу; это действительно зависит от приложения.