0

.Net Web アプリケーションにベース ページ (System.Web.UI.Page から継承され、すべてのページがこのベース ページから継承されます) があり、現在、次のメソッドを配置した場合

protected void CheckAllowedRole(string UserName, List<string> AllowedRoles)
    {
        try
        {
            bool IsAllowed = false;
            foreach (string item in AllowedRoles)
            {
                if (Roles.IsUserInRole(UserName, item))
                    IsAllowed = true;
            }
            if (!IsAllowed)
                Response.Redirect("~/Members/Error.aspx", false);

        }
        catch (Exception err)
        {
            Response.Redirect("~/Members/Error.aspx", false);
        }
    }

なぜか役柄がわからない!?!? 戻る。ユーザー名をこのメソッドに渡しても、まだ機能しません。

しかし、このコードを取得して、このベース ページから継承したページに挿入すると、うまく機能します (問題ありません)。何か案は?ロール (または基本クラスのメンバーシップ プロバイダー) に制限はありますか。

ありがとう

4

1 に答える 1

0

ユーザー名を提供する代わりに、これを試してみませんか:

    protected void CheckAllowedRole(List<string> AllowedRoles)
    {
        try
        {
            if (!Page.User.Identity.IsAuthenticated)
                throw new Exception("Unauthenticated User");

            string name = Page.User.Identity.Name;

            bool IsAllowed = false;
            foreach (string item in AllowedRoles)
            {
                IsAllowed = Roles.IsUserInRole(name, item);
            }

            if (!IsAllowed)
                Response.Redirect("~/Members/Error.aspx", false);
        }
        catch (Exception err)
        {
            Response.Redirect("~/Members/Error.aspx", false);
        }
    }
于 2009-06-08T06:34:02.963 に答える