检查用户是否在未经授权的页面上

时间:2013-02-05 21:34:02

标签: c# asp.net web-config

我在web.config中有一些行如下所示:

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

  <location path="Error.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="Default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

我自己正在控制登录方法。假设用户未登录并登陆abc.aspx页面。 Abc.aspx页面无权在未登录的情况下查看,如上面的web.config中所示,只允许使用default.aspx和error.aspx。如何通过web.config动态检查我当前所在的页面是否允许?我可以对它进行硬编码,但是我想知道这是否可行,这样我每次要将页面添加到例外列表时都要修改web.config而不是我的代码。

2 个答案:

答案 0 :(得分:1)

在authenticntcation标记后将其添加到您的webconfig。这将确保未经授权的用户不会访问任何页面,您添加的其他标签应允许匿名访问您指定的页面。

<authorization>
  <deny users="?"/>
</authorization>

答案 1 :(得分:0)

在每个页面上,您可以添加:

    protected void Page_Load(object sender, EventArgs e)
    {
            if (!Request.IsAuthenticated)
            {
                Response.Redirect("~/Account/Login.aspx");
            }

    }