2013-02-14 4 views
0

인증 된 사용자가 자신의 데이터 만 관리하기 위해 보안 영역에 액세스 할 수 있도록 권한 부여 속성이 필요합니다.경로 데이터 값을 얻는 방법

httpContext.User.Identity.Name을 검색하고 데이터베이스에서 검색된 사용자 이름과 일치 시키려고했습니다.

이 방법이 기본적으로 안전합니까? 또는 마음에 더 안전하게 할 수 있습니까?

그래서, 내 컨트롤러는 사용자 지정 특성

[UserAccountAuthorizeAttribute] 
public ActionResult Edit(string username) 
{ 
    return View(); 
} 

로 장식되어 나는 AuthorizeAttribute을 무시하지만 디버그 모드에서 aproblem 할 수있는

var rd = httpContext.Request.RequestContext.RouteData; 
var username = rd.Values["username"]; // null 

라인

다음에 null 값을 가지고있어?

답변

0

쿼리 문자열에 사용자 이름을 넣으면 안됩니다.

기본 제공 ASP.NET 멤버 자격 공급자를 사용하는 경우 동작은 다음과 같습니다.

[Authorize] 
    public ActionResult Edit() 
    { 
     var userId = (Guid)Membership.GetUser().ProviderUserKey; 

     var someService = new MyService(); 
     var someData = someService.GetSomeDataByUserId(userId); 
     //... 
    } 
관련 문제