2013-07-08 4 views
2

Authorize 특성을 사용하여 사용자가 특수 뷰를 볼 수 있는지 여부를 확인합니다.authorize 특성 사용 ASP.Net MVC

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

는 가정이 무의 URL입니다 : 로컬 호스트 : 16621/패널/색인/1 이제이 승인 된 사용자는 1 2로 변경하고 다른 사용자의 정보를 탐색 할 수 있습니다. localhost : 16621/Panel/Index/2와 마찬가지로 이 것을 방지하는 방법 ??? 속성을 인증하기 위해 매개 변수를 전달하는 방법이 있습니까? 사용자가 다른 사용자 정보에 액세스하지 못하게하려면 어떻게해야합니까?

+2

안젤리나. 이것은 너무 많은 시간이 이미 그래서 물었다. 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

[승인] 권한이없는 사용자, 지정된 범위 내에 있지 않은 사용자 또는 잘못된 역할의 사용자를 시작합니다. 컨텍스트 바인딩 된 데이터의 안전성은 전적으로 사용자에게 달려 있습니다. 실제 사용자가 전달 된 ID를 사용할 수없는 경우 Index() 본문에서이 작업을 수행하고 다른 위치로 사용자를 리디렉션해야합니다.

+2

이것은 좋은 해결책이 아닙니다. 사용자 정의 권한 부여 특성을 사용하는 것이 좋습니다. – ataravati

1

정확히이 목적으로 사용할 수있는 "AuthenticationFilter"ASP.NET MVC5가 있습니다.

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(); 
     } 
    } 
    } 
} 
관련 문제