我使用的是你之前给我的身份验证方法,这是我的控制器身份验证代码
<ValidateInput(False)> _
Public Function Authenticate(ByVal returnUrl As String) As ActionResult
Dim response = openid.GetResponse()
If response Is Nothing Then
' Stage 2: user submitting Identifier
Dim id As Identifier
If Identifier.TryParse(Request.Form("openid_identifier"), id) Then
Try
Return openid.CreateRequest(Request.Form("openid_identifier")).RedirectingResponse.AsActionResult()
Catch ex As ProtocolException
ViewData("Message") = ex.Message
Return View("Login")
End Try
Else
ViewData("Message") = "Invalid identifier"
Return View("Login")
End If
Else
' Stage 3: OpenID Provider sending assertion response
Select Case response.Status
Case AuthenticationStatus.Authenticated
If Not OpenIDService.IsOpenIdAssociated(response.ClaimedIdentifier) Then
UserService.AddUser(response.ClaimedIdentifier, response.FriendlyIdentifierForDisplay)
UserService.SubmitChanges()
ActivityLogService.AddActivity(OpenIDService.GetOpenId(response.ClaimedIdentifier).UserID, _
Utilities.ActivityLog.LogType.UserAdded, _
HttpContext.Request.UserHostAddress)
Else
ActivityLogService.AddActivity(OpenIDService.GetOpenId(response.ClaimedIdentifier).UserID, _
Utilities.ActivityLog.LogType.UserLogin, _
HttpContext.Request.UserHostAddress)
End If
ActivityLogService.SubmitChanges()
' Create the authentication cookie. This cookie
' includes the AuthUserData information in the
' userData field of the FormsAuthentication Cookie.
Dim authUser As Authentication.AuthUserData = New Authentication.AuthUserData(OpenIDService.GetOpenId(response.ClaimedIdentifier).User)
HttpContext.Response.Cookies.Add(Authentication.CustomAuthentication.CreateAuthCookie(response.ClaimedIdentifier, _
authUser, _
True))
authUser = Nothing
If Not String.IsNullOrEmpty(returnUrl) Then : Return Redirect(returnUrl)
Else : Return RedirectToAction("Index", "Events")
End If
Case AuthenticationStatus.Canceled
ViewData("Message") = "Canceled at provider"
Return View("Login")
Case AuthenticationStatus.Failed
ViewData("Message") = response.Exception.Message
Return View("Login")
End Select
End If
Return New EmptyResult()
End Function
Users
我还有一个
OpenIDs
带有
UserID
现场。OpenIds表允许每个用户拥有无限数量的openid。