1

ポータルのような asp.net Web アプリケーションをゼロから構築したいと考えており、ユーザー管理の標準的な方法として asp.net MembershipProvider を検討していました。SqlMembershipProvider から継承するプロバイダーを作成し、ValidateUser メソッドをオーバーライドします。

        public override bool ValidateUser(string username, string password)
        {
            string temp = ApplicationName;
            List<MtscApp> allApps = GetAllApplications();
            foreach (MtscApp app in allApps)
            {
                ApplicationName = app.Name;
                Roles.ApplicationName = app.Name;
                if (base.ValidateUser(username, password))
                {
                    return true;
                }
            }
            ApplicationName = temp;
            Roles.ApplicationName = temp;
            return false;
        }

入力された資格情報をすべてのアプリケーションに対して検証しようとしていますが、GetAllApplicationsMethod() は aspnet_Applications テーブルからすべてのアプリケーションを取得します (同じテーブルにアプリケーションを挿入するための部分もあります)。

検証が成功した場合、アプリケーション名はメンバーシップ プロバイダーとロール プロバイダーの両方に残されます。それ以外の場合は、匿名ユーザー用に事前定義されたアプリケーションである既定の名前のままになります。

4

1 に答える 1

1

はい、私は何度か似たようなことをしました。唯一の違いは、ユーザーがアクセスする URL に基づいてデータベース テーブルでアプリケーション名を検索し、その 1 つのアプリのみを検証することです。このテーブルには、URL と ApplicationName の 2 つのフィールドがあります。ApplicationName は、aspnet_Applications.ApplicationName フィールドと同じ ApplicationName です。

于 2008-12-30T20:44:27.790 に答える