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

本文关键字:授权 用户 是否 检查 | 更新日期: 2023-09-27 17:57:55

我在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页面。如上述web.config中所示,Abc.aspx页面未经登录即无权查看,只允许使用default.aspx和error.aspx。如何动态检查web.config是否允许我当前所在的页面?我可以硬编码它,但我想看看这是否可行,这样我所要做的就是修改web.config,而不是每次我想将页面添加到异常列表时修改我的代码。

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

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

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

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

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