1

私のコードビハインド

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

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

    e.Authenticated = auth;

}

それは偽になります。OnAuthenticate イベントを指定しないと、ユーザーが検証され、期待どおりに動作します。何を与える?

デフォルトの OnAuthenticate コードを呼び出して、その最後に追加のチェックを追加したいだけです。どちらのシナリオでも LDAP を使用して認証しています。

4

2 に答える 2

2

MSDN のドキュメントに記載されているように、資格情報が Web.config ファイルに次のように保存されている場合は、 FormsAuthentication.Authenticateメソッドを使用する必要があります。

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

ただし、SqlMembershipProvider、ActiveDirectoryMembershipProvider、またはその他のカスタム プロバイダーなどの MembershipProvider 抽象クラスから継承するメンバーシップ プロバイダーに対して資格情報を検証する場合は、代わりにMembership.ValidateUserメソッドを使用する必要があります。

交換だと思います

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

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

あなたの問題を解決します。

于 2010-11-19T22:42:10.197 に答える
1

より多くのコードを提供できますか?AUTHENTICATEのユーザーのみを認証し、Cookieは設定しないなど。このメソッドを使用して、username \ passwordが有効かどうかを判断します(Trueを返す場合)。

代わりにこれを試してCookieを設定してください。

Dim boolVal as Boolean = FormsAuthentication.Authenticate(LogonForm.UserName, LogonForm.Password)
If boolVal Then
   FormsAuthentication.SetAuthCookie(LogonForm.UserName,False)
End If
于 2010-11-19T18:10:48.300 に答える