У меня есть веб-сайт ASP.NET MVC, на котором большинство моих контроллеров имеют атрибуты Authorize для принудительной аутентификации форм.
Я собираюсь сделать этот сайт доступным на Facebook через приложение Facebook, но для моих пользователей FB я хочу использовать другую аутентификацию / авторизацию, я хочу использовать атрибут CanvasAuthorize на моих контроллерах.
Проблема в том, что я не могу использовать оба на своих контроллерах / действиях, потому что тогда оба они будут принудительно доступны для доступа к соответствующему действию, но я хочу только Авторизоваться для обычного веб-сайта, и я хочу только CanvasAuthorize, когда доступ к сайту осуществляется из FB (через приложение FB).
Я начал
- рефакторинг огромного количества моих существующих контроллеров в 'controllerhelpers'
- заставить существующие контроллеры (с атрибутом authorize) использовать соответствующий метод controllerhelpers
- создать новые контроллеры (украшенные CanvasAuthorize) для FB-приложения, которые также используют соответствующие методы controllerhelper
Но это огромная работа, и я не уверен, стоит ли идти этим путем, или есть намного более элегантный способ работы.
Конечно, я хочу использовать те же представления, и в моих cshtmls я использую методы Url.Action определенных контроллеров, так что с моим текущим подходом я вставляю пути действия в мои cshtmls (например, для jQuery ajax) Свойства URL) Я должен сделать оператор if, чтобы использовать, например, «PersonalController», когда используется обычный веб-сайт, и использовать «FBPersonalController», когда веб-сайт используется в качестве приложения FB.
В этом случае PersonalController украшен [Authorize], а FBPersonalController украшен [CanvasAuthorize].
Итак, любая обратная связь приветствуется;)
Спасибо!