2012-09-13 2 views
5

저는 ASP.net MVC 3 웹 응용 프로그램을 실행하며 멤버 자격 공급자를 사용하고 있습니다. 사용자 (또는 관리자)가 기존 계정 사용자 이름을 변경하도록 허용 할 수 있는지 알고 싶습니다. 나는 이것을 할 길을 찾지 못했습니다. 사용자 이름은 전자 메일 주소가 아니지만 새로운 이름을 지정하기 전에 고유성으로 유효성이 검사됩니다.사용자 이름 변경 ASP.net MVC 3 멤버쉽

도움이 될 것입니다.

답변

7

멤버 자격 공급자는 사용자 이름을 업데이트하는 방법을 제공하지 않습니다. 이 변경을 허용하려면 멤버 자격 공급자 UpdateUser 메서드를 확장하거나 멤버십 테이블과 직접 상호 작용해야합니다. 이 접근하지만, 몇 가지 항목

  1. 업데이트에 대한 명심하십시오, 당신은 많은 사용자가 생성 될 때 발생하는 같은 이름의 고유성을 확인해야합니다.

  2. 사용자가 로그인하여 사용자 이름을 변경하면 강제로 로그 아웃 한 다음 다시 로그인하거나 AuthenticationTicket 쿠키를 다시 발행해야합니다. 그 이유는 그들이 사용자 이름을 변경하면 authTicket 쿠키가 사용자 이름과 실제 사용자 이름을 더 이상 일치시키지 않기 때문입니다. HttpContext.Identity.User.Name을 사용하여 데이터 저장소를 쿼리하거나 콘텐츠에 대한 승인을 확인하면 해당 사용자 이름이 더 이상 존재하지 않으므로 더 이상 결과를 반환하지 않습니다.

+0

어떻게 AuthenticationTicket 쿠키를 다시 발행합니까? 추측 하건데, FormsAuthentication.SetAuthCookie()를 호출하는 것이 좋겠지 만, 아마도 알고있을 것입니다. –

+1

예. 당신은 그것을 가지고 있습니다. 기본적으로 새로운 인증 쿠키를 생성하고 이전 인증 쿠키를 덮어 쓰면서 응답과 함께 다시 보냅니다. 누군가 어딘가에 문제를 일으킬 수 있다고 생각할 수있는 유일한 점은 쿠키의 만료 시간이 재설정된다는 것입니다. – Tommy

+0

새 사용자 이름 (그리고 createPersistentCookie가 false로 설정 됨)을 사용하여이를 호출했지만 이전 사용자 이름이나 새 사용자가 로그인에 사용할 수 없음을 발견했습니다. –