2010-11-19 31 views
1

KodumASP.NET Giriş kontrolü özel kimlik doğrulama başarısız

protected void LogonForm_Authenticate(object sender, AuthenticateEventArgs e) 
{ 
    bool auth = false; 

    if (FormsAuthentication.Authenticate(LogonForm.UserName, LogonForm.Password)) 
    { 
     auth = true; 
    } 

    e.Authenticated = auth; 

} 

'dir. Bu yanlış sonuçlanır. Bir OnAuthenticate olayı belirtmediğimde, kullanıcı doğrulanır ve beklendiği gibi çalışır. Ne verir?

Varsayılan OnAuthenticate kodunu çağırmak ve daha sonra ek bir kontrol eklemek istiyorum. Her iki senaryoda da kimlik doğrulaması yapmak için LDAP kullanıyorum.

+0

Kimlik doğrulama için hangi tür üyelik sağlayıcısına güveniyorsunuz? MembershipProvider özet sınıfını miras alan bazı özel üyelik sağlayıcısı mı? ( –

cevap

2

olarak MSDN'deki belgelerinde belirtilen, FormsAuthentication.Authenticate yöntem böyle Web.config dosyasında depolanır kimlik bilgilerine sahip durumda kullanılmalıdır:

<authentication mode="Forms"> 
    <forms loginUrl="login.aspx"> 
     <credentials passwordFormat="Clear"> 
      <user name="user1" password="password1" /> 
      <user name="user2" password="password2" /> 
     </credentials> 
</forms> 
</authentication> 

Ama eğer bir üyelik karşı kimlik doğrulama eğer fr devralan sağlayıcı SqlMembershipProvider, ActiveDirectoryMembershipProvider veya diğer özel sağlayıcılar gibi MembershipProvider soyut sınıfı, bunun yerine Membership.ValidateUser yöntemini kullanmalısınız.

Ben

if (Membership.ValidateUser(LoginUser.UserName, LoginUser.Password)) 

ile

if (FormsAuthentication.Authenticate(LogonForm.UserName, LogonForm.Password)) 

değiştirilmesi sorununuzu çözecektir düşünüyorum.

1

Daha fazla kod sağlayabilir misiniz?

Dim boolVal as Boolean = FormsAuthentication.Authenticate(LogonForm.UserName, LogonForm.Password) 
If boolVal Then 
    FormsAuthentication.SetAuthCookie(LogonForm.UserName,False) 
End If 
: Bir kullanıcı adı \ şifre geçerli olup olmadığını (True döndürür aka varsa) belirlemek için

bu yöntemi kullanın Bir kullanıcı, bu vb bir çerez bırakır doesnt oluyor kimlik doğrulaması yalnızca kimlik doğrulaması çerez ayarlamaya yerine bunu deneyin

+0

adresindeki öğesinden ayarlanan sağlayıcı kümesinin türü) Postalamamı güncelledim. Çerezleri de ayarlamam gerektiğini anlıyorum, ancak FormsAuthentication.Authenticate herhangi bir nedenden dolayı oturum açma kullanıcı adı/parola geçtiğimde yanlış sonuçlanıyor. Orijinal Kimlik Doğrulama'nın bu çağrıdan önce daha fazla olduğunu ve bir şekilde doğru olduğunu düşünüyorum. – ryan

İlgili konular