2013-02-05 30 views
3

上我在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> 

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

+2

你为什么要这样做,而不是使用'Authorize'属性,它将处理未经授权的用户重定向? –

+0

ASP.NET是不是为你处理重定向?对我来说,任何尝试访问“Error.aspx”或“Default.aspx”以外的页面都应该将未经身份验证的用户重定向到登录页面。请更好地解释“我自己控制登录方法”的含义 –

回答

0

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

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

    } 
1

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

<authorization> 
    <deny users="?"/> 
</authorization> 
相关问题