我的.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);
}
}
因为某些原因它不知道角色是什么!?!?返回。我甚至将用户名传递给这些方法,但仍然无效。
但是如果我把这段代码放到我的页面中,那么从这个基页继承下来的效果很好(没问题)。有任何想法吗?角色(或基类中的成员资格提供者)是否有任何限制。
由于
答案 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);
}
}