2013-11-04 1 views
3

사용자가 사용자 ID로 양식을 제출할 수 있도록하는 것이 좋은 보안 방법은 아니라고 들었습니다. 이로 인해 사용자 ID가 URL에 표시되도록하는 것이 바람직하지 못하다. 그러나 사용자가 다른 사용자 프로필을 볼 수있는 방법이 필요합니다. 내가 이름으로 컨트롤러 사용자 찾기에서 다음ASP.NET MVC 5의 사용자 프로필 페이지에 어떻게 링크해야합니까?

@Html.ActionLink("Details", "Details", new { id = item.username }) 

를 사용하여 사용자를 반환해야하는 경우

내가 대신

@Html.ActionLink("Details", "Details", new { id = item.Id }) 

를 사용, 궁금 해서요.

올바른 방법인가요?

이이 이미 당신이 경우 아이디를 검색해야하는 요구 사항을 제거로서 나는, 사용자 이름 접근 방식을 선호 지금 내 컨트롤러 액션

// GET: /User/Details?UserName=bbob 
    public ActionResult Details(string UserName) 
    { 
     if (UserName == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     ApplicationUser aspnetuser = UserManager.FindByName(UserName); 

     if (aspnetuser == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(aspnetuser); 
    } 
+0

당신은 그의 이름 insode 컨트롤러를 사용자 bu ​​얻을 수 있습니다, 안 그래? – LINQ2Vodka

+0

URL 또는 양식 POST에 ID를 보내는 데 아무런 문제가 없습니다. 데이터베이스의 모든 기본 키를 난독 화하려고합니까? http : //stackoverflow.com/questions/2087441/using-primary-key-in-asp-net-mvc-urls – Tommy

답변

5

내 링크

@Html.ActionLink(person.FullName, "Details","User" , new { UserName = person.UserName }, null) 

지금 사용자 이름을 알아야하며 사용자가 가능한 ID 목록을 반복하여 사용자 정보를 "탐색"하는 것을 더 어렵게 만듭니다.

또한이 질문에 아마 플래그가 표시됩니다. :)