0

ユーザーのログイン値と資格情報を格納するためのデータベースとテーブルを 1 つ作成しました。asp.net はaspnet_regsql、メンバーシップ関連の活動のためのデータベースを作成するためのツールを提供しています。でも使いたくない。そのため、別のデータベースを作成しました。今、このデータベースを自分のプロジェクトに接続したいと思います。接続文字列パラメーターの web.config ファイルを、新しく作成したデータベースに変更しました。しかし、ログインできません。次のエラーメッセージが表示されます。

Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'

これで作業する方法。ステップバイステップの手順はありますか!! もしそうなら、提供してください。web.config ファイルの接続文字列以外に変更するものはありますか?

4

1 に答える 1

2

認証用のカスタム テーブルに接続するには、メンバーシップ プロバイダーを作成する必要があります。MSDN には、この件に関するドキュメントがいくつかあります。また、ASP.NET で主題に関するビデオを表示することもできます。ここにリンクがあります。

検証の主な方法は ValidateUser メソッドになり、このメソッドをオーバーライドして認証を提供します。

public sealed class CustomMembershipProvider : MembershipProvider
{
    // implement other methods

    public override bool ValidateUser(string username, string password)
    {
        try
        {
            var user = // GET USER OBJECT HERE
            if (user != null)
            {
                string name =  // set username

                // Set your forms authentication ticket
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user.ID.ToString(), DateTime.Now, DateTime.Now.AddMinutes(30), false, name, FormsAuthentication.FormsCookiePath);

                HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
                HttpContext.Current.Response.Cookies.Add(authCookie); 
                return true;                    
            }
        }
        catch
        {
        }

        return false;
    }

    // Other implementations
}

アプリケーションにロールがある場合は、カスタム ロール プロバイダーを実装することもできます。

http://msdn.microsoft.com/en-us/library/8fw7xh74(v=vs.100).aspx

于 2013-01-30T13:02:04.967 に答える