我的基页类上的Roles.IsUserInRole()

时间:2009-06-08 06:22:54

标签: membership-provider

我的.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);
        }
    }

因为某些原因它不知道角色是什么!?!?返回。我甚至将用户名传递给这些方法,但仍然无效。

但是如果我把这段代码放到我的页面中,那么从这个基页继承下来的效果很好(没问题)。有任何想法吗?角色(或基类中的成员资格提供者)是否有任何限制。

由于

1 个答案:

答案 0 :(得分: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);
        }
    }