我有这样几个文件:web.config,login.aspx,default.aspx,OracleMembershipProvider.vbdefault.aspx页面放的是一个CreateUserWizard的控件,login.aspx页面放的是一个login控件。怎样配置web.config,并且在OracleMembershipProvider.vb中应该如何实现,下面OracleMembershipProvider.vb代码是连接access的,但我想连接ORACLE,有没有谁知道怎么实现的?最好提供代码,有SAMPLE的发到我邮箱[email protected],或者有好的网址也可以。不过要是连接oracle的。web.config配置如下:
<?xml version="1.0" encoding="utf-8"?><configuration>
  
    <appSettings/>
  <system.web>
      <compilation debug="true" strict="false" explicit="true" />      <authentication mode="Forms">
        <forms loginUrl="Login.aspx"
               protection="All"
               timeout="40"
               name="AppNameCookie"
               path="/FormsAuth"
               requireSSL="false"
               slidingExpiration="true"
               defaultUrl="default.aspx"
               cookieless="UseCookies"
               enableCrossAppRedirects="false"/>
      </authentication>        <authorization>
          <allow users="*" />
        </authorization>        <sessionState
            mode="InProc"
            cookieless="false"
            timeout="40"
          />    <membership
    defaultProvider="OracleMembershipProvider" >
      <providers>
        <clear/>
        <add name="OracleMembershipProvider"
             type="Oracle.OracleMembershipProvider"
             requiresQuestionAndAnswer="true"
             connectionString="Provider=Microsoft.Jet.
OLEDB.4.0;Data Source=D:\Members.mdb;Persist Security 
Info=False" />
      </providers>
    </membership>    </system.web>
</configuration>OracleMembershipProvider.vb代码如下:
Imports System.DataPublic Class OracleMembershipProvider
    Inherits MembershipProvider    Private connStr As String
    Private comm As New OleDb.OleDbCommand
    Private _requiresQuestionAndAnswer As Boolean
    Private _minRequiredPasswordLength As Integer
    Public Overrides Sub Initialize(ByVal name As String, ByVal config As System.Collections.Specialized.NameValueCollection)        '===retrives the attribute values set in 
        'web.config and assign to local variables===
        If config("requiresQuestionAndAnswer") = "true" Then _
        _requiresQuestionAndAnswer = True
        connStr = config("connectionString")
        MyBase.Initialize(name, config)
    End Sub    Public Overrides Function CreateUser(ByVal username As String, ByVal password As String, ByVal email As String, ByVal passwordQuestion As String, ByVal passwordAnswer As String, ByVal isApproved As Boolean, ByVal providerUserKey As Object, ByRef status As System.Web.Security.MembershipCreateStatus) As System.Web.Security.MembershipUser
        Dim conn As New OleDb.OleDbConnection(connStr)
        Try
            conn.Open()
            Dim sql As String = "INSERT INTO Member VALUES (" & _
            "@username, @password, @email, " & _
            " @passwordQuestion, @passwordAnswer )"
            Dim comm As New OleDb.OleDbCommand(sql, conn)
            comm.Parameters.AddWithValue("@username", username)
            comm.Parameters.AddWithValue("@password", password)
            comm.Parameters.AddWithValue("@email", email)
            comm.Parameters.AddWithValue("@passwordQuestion", passwordQuestion)
            comm.Parameters.AddWithValue("@passwordAnswer", passwordAnswer)
            Dim result As Integer = comm.ExecuteNonQuery()
            conn.Close()            status = MembershipCreateStatus.Success
            Dim user As New MembershipUser("AccessMembershipProvider", username, Nothing, email, passwordQuestion, Nothing, True, False, Now, Nothing, Nothing, Nothing, Nothing)
            Return user
        Catch ex As Exception
            status = MembershipCreateStatus.UserRejected
            Return Nothing
        End Try
    End Function    Public Overrides Function ValidateUser( _
ByVal username As String, _
ByVal password As String) As Boolean        Dim conn As New OleDb.OleDbConnection(connStr)
        Try
            conn.Open()
            Dim sql As String = _
            "Select * From Membership WHERE " & _
            "username=@username AND password=@password"
            Dim comm As New OleDb.OleDbCommand(sql, conn)
            comm.Parameters.AddWithValue("@username", _
            username)
            comm.Parameters.AddWithValue("@password", _
            password)
            Dim reader As OleDb.OleDbDataReader = _
            comm.ExecuteReader
            If reader.HasRows Then
                Return True
            Else
                Return False
            End If
            conn.Close()        Catch ex As Exception
            Console.Write(ex.ToString)
            Return False
        End Try
    End Function End Class

解决方案 »

  1.   

    关于如何创建自定义的Membership Provider请参考下面的链接:
    http://www.devx.com/asp/Article/29256/1954?pf=true相关实现代码请参考:
    http://www.ben-rush.net/source/OracleProviders/
      

  2.   

    在web.config里面应该怎么配置membership才能让登录页面上的login按钮按下去的时候能自动读到OracleMembershipProvider.vb我现在的web.config是这样的,但是每次按钮按下去老是报配置错误,下面就是报错的地方,老是报读不到,不知道什么原因,web里面已经引用membership工程了,高手指点一下是什么原因?这个type到底配的是什么?行 34:              type="Admin.Membership.OracleMembershipProvider"<?xml version="1.0"?>
    <configuration >
      
      <appSettings/>  <connectionStrings>
        <add name ="OracleConString" connectionString="server=localhost;database=orcl;uid=toeic21;pwd=toeic21;"/>
      </connectionStrings>
      
      <system.web>    <compilation debug="true" strict="false" explicit="true" />
        
        <authentication mode="Forms">
          <forms name="AdminAuth" loginUrl="Login.aspx" protection="None" timeout="40"/>
        </authentication>    <authorization>
          <allow users="*" />
        </authorization>    <sessionState
            mode="InProc"
            cookieless="false"
            timeout="40"
              />
       <membership>
          <providers>
            <clear/>
            <add name="OracleMembershipProvider"
                 type="Admin.Membership.OracleMembershipProvider"
                 connectionString="user id=toeic21;data source=orcl;password=toeic21" 
                 enablePasswordRetrieval="false" 
                 enablePasswordReset="false" 
                 requiresUniqueEmail="false" 
                 requiresQuestionAndAnswer="false" 
                 minRequiredPasswordLength="7" 
                 minRequiredNonalphanumericCharacters="1" 
                 applicationName="/" hashAlgorithmType="SHA1" 
                 passwordFormat="Hashed"/>
          </providers>
        </membership>
     
      </system.web>
      
    </configuration>