你需要編寫從MembershipProvider繼承一個類並重寫你的方法興趣:在web.config中
Public Class MyCustomMembershipProvider
Inherits System.Web.Security.MembershipProvider
Public Overrides Property ApplicationName As String
Get
End Get
Set(value As String)
End Set
End Property
Public Overrides Function ChangePassword(username As String, oldPassword As String, newPassword As String) As Boolean
End Function
Public Overrides Function ChangePasswordQuestionAndAnswer(username As String, password As String, newPasswordQuestion As String, newPasswordAnswer As String) As Boolean
End Function
Public Overrides Function CreateUser(username As String, password As String, email As String, passwordQuestion As String, passwordAnswer As String, isApproved As Boolean, providerUserKey As Object, ByRef status As System.Web.Security.MembershipCreateStatus) As System.Web.Security.MembershipUser
End Function
Public Overrides Function DeleteUser(username As String, deleteAllRelatedData As Boolean) As Boolean
End Function
Public Overrides ReadOnly Property EnablePasswordReset As Boolean
Get
End Get
End Property
Public Overrides ReadOnly Property EnablePasswordRetrieval As Boolean
Get
End Get
End Property
Public Overrides Function FindUsersByEmail(emailToMatch As String, pageIndex As Integer, pageSize As Integer, ByRef totalRecords As Integer) As System.Web.Security.MembershipUserCollection
End Function
Public Overrides Function FindUsersByName(usernameToMatch As String, pageIndex As Integer, pageSize As Integer, ByRef totalRecords As Integer) As System.Web.Security.MembershipUserCollection
End Function
Public Overrides Function GetAllUsers(pageIndex As Integer, pageSize As Integer, ByRef totalRecords As Integer) As System.Web.Security.MembershipUserCollection
End Function
Public Overrides Function GetNumberOfUsersOnline() As Integer
End Function
Public Overrides Function GetPassword(username As String, answer As String) As String
End Function
Public Overloads Overrides Function GetUser(providerUserKey As Object, userIsOnline As Boolean) As System.Web.Security.MembershipUser
End Function
Public Overloads Overrides Function GetUser(username As String, userIsOnline As Boolean) As System.Web.Security.MembershipUser
End Function
Public Overrides Function GetUserNameByEmail(email As String) As String
End Function
Public Overrides ReadOnly Property MaxInvalidPasswordAttempts As Integer
Get
End Get
End Property
Public Overrides ReadOnly Property MinRequiredNonAlphanumericCharacters As Integer
Get
End Get
End Property
Public Overrides ReadOnly Property MinRequiredPasswordLength As Integer
Get
End Get
End Property
Public Overrides ReadOnly Property PasswordAttemptWindow As Integer
Get
End Get
End Property
Public Overrides ReadOnly Property PasswordFormat As System.Web.Security.MembershipPasswordFormat
Get
End Get
End Property
Public Overrides ReadOnly Property PasswordStrengthRegularExpression As String
Get
End Get
End Property
Public Overrides ReadOnly Property RequiresQuestionAndAnswer As Boolean
Get
End Get
End Property
Public Overrides ReadOnly Property RequiresUniqueEmail As Boolean
Get
End Get
End Property
Public Overrides Function ResetPassword(username As String, answer As String) As String
End Function
Public Overrides Function UnlockUser(userName As String) As Boolean
End Function
Public Overrides Sub UpdateUser(user As System.Web.Security.MembershipUser)
End Sub
Public Overrides Function ValidateUser(username As String, password As String) As Boolean
End Function
End Class
然後您註冊自定義提供:
現在從您的控制器中,您只需使用Membership
類。例如,在您的LogOn
行動,是由默認的模板在您創建項目產生你不需要改變任何東西絕:
<HttpPost()> _
Public Function LogOn(ByVal model As LogOnModel, ByVal returnUrl As String) As ActionResult
If ModelState.IsValid Then
If Membership.ValidateUser(model.UserName, model.Password) Then
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe)
If Url.IsLocalUrl(returnUrl) AndAlso returnUrl.Length > 1 AndAlso returnUrl.StartsWith("/") _
AndAlso Not returnUrl.StartsWith("//") AndAlso Not returnUrl.StartsWith("/\\") Then
Return Redirect(returnUrl)
Else
Return RedirectToAction("Index", "Home")
End If
Else
ModelState.AddModelError("", "The user name or password provided is incorrect.")
End If
End If
' If we got this far, something failed, redisplay form
Return View(model)
End Function
到Membership
所有來電都會使用您在註冊您的自定義成員資格提供web.config中。
類不是接口,.NET不支持多繼承 – jgauffin
爲什麼你想讓你的控制器繼承Membership類?通常情況下,您只需從您的控制器方法中調用靜態方法,如「Membership.ValidateUser(...)」。 –
這就是我正在收集的東西。我如何創建會員供應商?我必須省略system.web.mvc.controller嗎?或者,我應該在單獨的文件中創建一個成員資格提供者,然後將其導入到我的控制器中?這更像是一個設計問題。 – user1477388