1

내가 사용자를 로그인 할 WebSecurity 및 SimpleMembershipProvider을 사용하고 있습니다.사용자가 이메일을 변경 한 것을 반영하도록 쿠키를 새로 고침하려면 어떻게해야합니까?

사용자를 자신의 이메일이 업데이트 후

Dim memberId As Integer = 1 

Dim context As UsersContext = New UsersContext 
Dim userProfile As UserProfile = 
    context.UserProfiles.Where(Function(f) f.UserId = memberId).SingleOrDefault() 
' Email before the change: "[email protected]" 
userProfile.UserName = "[email protected]" 
context.SaveChanges() 

을 변경할 수 있습니다, 그러나, HttpContext를 여전히 그들의 오래된 이메일과 같은 사용자를보고합니다. 처음에는

' Name is "[email protected]" but should be "[email protected]" 
HttpContext.User.Identity.Name 

는 내가 자신의 로그인 정보를 변경하는 사용자를 반영하기 위해 어떻게 든 인증 쿠키를 새로 고칠 수 있습니다 어떻게 그냥

WebSecurity.Logout() 
' but I don't have the user's password 
WebSecurity.Login("[email protected]", "???") 

에서 다시 사용자가 로그인 할 수 있다고 생각?

+0

로그 아웃하고 새로운 사용자 이름으로 다시 로그인하십시오. –

+0

하지만 저는'WebSecurity'를 사용하고 있습니다.'Login' 메소드는 사용자 이름과 패스워드가 전달되어야합니다. 어떤 아이디어? –

+0

yick. 당신이 암호없이 그것을 할 수 없다면, 그것의 gona가 더러워 져라 ... 그것에 생각할 것이다 ... –

답변

1

구성원을 통해 쿠키를 변경하려면, 당신이 밖으로 사용자를 로그인하고 다시 그들을 로그인 붙어 것)?이 처리합니다.

당신이 그 시점에서 직면하고있는 딜레마를하는 방법을 사용자가 로그인하는 그들없이 Passowrd.

사용자가 변경하는 동안 가장 좋은 전망은 사용자의 비밀번호를 묻는 것 같습니다. 이것은 합리적인 느낌을 가지고 있으며 비밀 번호로 당신을 품다.

+1

내 솔루션이 작동하는 동안 문제에 대한 답변을 찾는 사람에게이 솔루션을 권하고 싶습니다. 사용자가 로그인 세부 정보를 변경할 수 있도록 허용하려면 ername/email)을 입력하면 동시에 비밀번호 입력을 요구하는 것이 좋은 보안 방법입니다. 입력 된 사용자 이름과 암호를 사용하여 로그 아웃 한 다음 다시 로그인 할 수 있습니다. –

1

여기 OP. 이것은 하나의 (추악한) 방법입니다 :

Dim newEmail As String = "[email protected]" 

Dim ticket As FormsAuthenticationTicket = 
    New FormsAuthenticationTicket(newEmail, False, FormsAuthentication.Timeout.Minutes) 

Dim identity As IIdentity = New FormsIdentity(ticket) 

HttpContext.Current.User = New RolePrincipal(identity) 

FormsAuthentication.SetAuthCookie(newEmail, False) 

괜찮 았지만 약간 추한 것 같습니다. 그것은에 의존하게 내 응용 프로그램을 강제 것 FormsAuthentication (맞습니까?) 당신이 코드를 사용하지만 내 자신의 사용자 정의 MemershipProvider에 넣어해야한다고 생각 마십시오

@ 데이브

(오른쪽은? 그것에게 MembershipProvider 있다는 것을

+1

추악한 것은 아니지만 DRY가 아닌 것 같아요. 좋은 첫발자라고 생각합니다. 이걸 간단하게 만들 수있는 자신의 공급자를 만들 수도 있지만, 이 문제를 피하기위한 투자 –

관련 문제