2013-07-08 3 views
2

Я использую атрибут Authorize, чтобы проверить, разрешен ли пользователь или нет специального представления.Использование атрибута authorize ASP.Net MVC

[HttpGet] 
    [Authorize] 
    public ActionResult Index(int ID) 
    { 
      ViewBag.sID = ID; 
      return View(); 
    } 

Пусть это му URL: локальный: 16621/Панель/Index/1 Теперь это авторизованный пользователь может изменить 1 на 2 и перейти к другой пользовательской информации. Как localhost: 16621/Panel/Index/2 Как предотвратить это ??? Есть ли способ передать параметр для атрибута authorize? Как запретить пользователю получать доступ к другой информации о пользователе?

+2

Angelina. это так много времени уже спрошено на SO. http://stackoverflow.com/questions/2329197/custom-form-authentication-authorization-scheme-in-asp-net-mvc?rq=1 http://stackoverflow.com/questions/427598/customizing-authorization- in-asp-net-mvc? rq = 1 http://stackoverflow.com/questions/554094/asp-net-mvc-adding-to-the-authorize-attribute?rq=1 –

+0

Посмотрите этот пост, он делает именно то, что вы хотите. http://stackoverflow.com/questions/10064631/mvc-3-access-for-specific-user-only – SOfanatic

ответ

4

Боюсь, что нет волшебного переключателя - [Авторизовать] просто запускают неавторизованных пользователей, пользователей, которые не находятся в указанном диапазоне, или пользователей в неправильной роли. Безопасность данных, привязанных к контексту, зависит от вас - вам нужно будет сделать это внутри тела Index() и перенаправить пользователя в другое место, если прошедший идентификатор недоступен для фактического пользователя.

+2

Это нехорошее решение. Лучше использовать настраиваемый атрибут authorize. – ataravati

1

Для этой цели существует ASP.NET MVC5 «AuthenticationFilter».

Authentication filters

фильтры аутентификации представляют собой новый тип фильтра в ASP.NET MVC, что запустить до фильтров авторизации в конвейере ASP.NET MVC и позволяют задать логику аутентификации за действия, для контроллера, или глобально для всех контроллеров. Аутентификация фильтрует процесс учетных данных в запросе и предоставляет соответствующий директор. Фильтры проверки подлинности также могут добавлять проблемы проверки подлинности в ответ на несанкционированные запросы.

См. this tutorial относительно того, как его использовать.

using System.Web.Mvc; 
using System.Web.Mvc.Filters; 

namespace VSMMvc5AuthFilterDemo.CustomAttributes 
{ 
    public class BasicAuthAttribute : ActionFilterAttribute, IAuthenticationFilter 
    { 
    public void OnAuthentication(AuthenticationContext filterContext) 
    { 
    } 

    public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext) 
    { 
     var user = filterContext.HttpContext.User; 
     if (user == null || !user.Identity.IsAuthenticated) 
     { 
     filterContext.Result = new HttpUnauthorizedResult(); 
     } 
    } 
    } 
} 
Смежные вопросы