获取ASP.Net基页中的页面特定信息

时间:2012-08-01 07:27:24

标签: asp.net .net

我在管理员界面中有以下逻辑。我在日志屏幕中也需要类似的逻辑。因此,我计划将此逻辑移至基页。在基页中,如何识别当前页面? (如何区分“管理”屏幕和“日志”屏幕?)。

根据页面,从配置中检索的值不同。

实现这一目标的不同方法有哪些?这些方法的最佳方法是什么?

        //Admin Screen
        List<string> authorizedRoles = new List<string>((ConfigurationManager.AppSettings["AdminScreenRoles"]).Split(','))
        if (!authorizedRoles.Contains(userRole))
        {
            Response.Redirect("UnauthorizedPage.aspx");
        }

    //Logs Screen   
        List<string> authorizedRoles = new List<string>((ConfigurationManager.AppSettings["LogsScreenRoles"]).Split(','))
        if (!authorizedRoles.Contains(userRole))
        {
            Response.Redirect("UnauthorizedPage.aspx");
        }

2 个答案:

答案 0 :(得分:2)

不要将代码放在识别继承它的类的基础中。添加一个孩子必须覆盖的抽象属性。 在基地:

public abstract string AppSettingsRolesName { get; }

List<string> authorizedRoles = new List<string>((ConfigurationManager.AppSettings[AppSettingsRolesName]).Split(','))
if (!authorizedRoles.Contains(userRole))
{
    Response.Redirect("UnauthorizedPage.aspx");
}

在日志中:

public override string AppSettingsRolesName 
{
   get { return "LogsScreenRoles"; }
}

在管理员中:

public override string AppSettingsRolesName 
{
   get { return "AdminScreenRoles"; }
}

答案 1 :(得分:0)

最简单的方法是查看表单身份验证,因为它将通过配置文件为您处理所有这些。网上有很多好文章 - 这里有一篇:

http://ondotnet.com/pub/a/dotnet/2003/01/06/formsauthp1.html

但是,如果您正在寻找快速修复方法,最简单的方法是将代码移动到基页中,并使用interface属性使继承的页面指示要使用的角色类型 - 例如类似的东西:

public abstract class BasePage : Page
{
    protected abstract string AuthorisedRoles { get; }

    protected override void  OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        List<string> authorizedRoles = new List<string>((ConfigurationManager.AppSettings[this.AuthorisedRoles]).Split(','));
        if (!authorizedRoles.Contains(userRole))
        {
            Response.Redirect("UnauthorizedPage.aspx");
        }
    }
}

public class LogsPage : BasePage
{
    protected override string AuthorisedRoles
    {
        get { return "LogsScreenRoles"; }
    }
}

public class AdminPagePage : BasePage
{
    protected override string AuthorisedRoles
    {
        get { return "AdminScreenRoles"; }
    }
}

但严重的是,如果您想要正确地进行表单身份验证,请查看表单身份验证 - 它并不像最初看起来那么复杂。