2011-01-28 17 views
3

Что является самым прямым способом использования AuthorizeAttribute и JsonResult вместе, чтобы при отсутствии разрешения пользователя приложение возвращало ошибку Json, а не страницу входа?ASP.NET MVC JsonResult и AuthorizeAttribute

Две вещи, которые я рассматриваю в настоящее время, распространяются AuthorizeAttribute или просто создают новый атрибут, который реализует IAuthorizationFilter.

ответ

3

Удалите AuthorizeAttribute со своего действия.

Тогда в первых строках своего действия, вставьте это:

if (!User.Identity.IsAuthenticated) 
    return Json("Need to login"); 

или вернуть то, что сообщение, которое вы хотите.

+2

Это похоже на плохой дизайн, если я не реорганизую эту логику в другой класс. Что делать, если мне нужно изменить сообщение об ошибке для нескольких действий? Я не вижу, что это происходит, но вы никогда не знаете ... – KPthunder

+5

Если вы хотите, вы можете создать свой собственный атрибут, который проверяет для авторизованных пользователей, а если нет, то вместо перенаправления возвращает объект json. – ajma

+1

Если вам нужно иметь несколько сообщений об ошибках, просто используйте ресурс для его хранения или сделайте его статической строкой, которую вы можете ссылаться при возврате jsonresult. – ajma

Смежные вопросы