如何配置ASP.net表单身份验证以仅拒绝特定URL

时间:2013-04-08 15:02:25

标签: c# forms-authentication

我有一个网站,我有一个admin.aspx页面。

用户成功登录Admin.aspx页面后,会将其重定向到Report.aspx页面。请注意,如果没有首先成功登录Admin.aspx页面,则无法访问Report.aspx页面。

请记住,还有其他页面,如index.aspx等,任何用户都可以在不登录的情况下查看。我只需要对JUST Report.aspx页面进行身份验证。

我有以下代码,但似乎没有工作,因为它说虚拟目录的问题。我做了一些根本错误的事情吗?

  <location path="Report.aspx">
    <system.web>
        <authentication mode="Forms">
            <forms loginUrl="Login.aspx" >
                <credentials passwordFormat="Clear">
                    <user name="John" password="pass@432"/>
                </credentials>
            </forms>
        </authentication>
        <authorization>
            <deny users="*" />
        </authorization>
    </system.web>
</location>

3 个答案:

答案 0 :(得分:1)

要在成功登录后重定向用户,请使用DestinationPageUrl属性。

<%@ Page Language="C#" autoEventWireup="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
        void PageLoad(Object sender, EventArgs e)
        {
            Login1.DestinationPageUrl = 
                String.Format("terms.aspx?{0}", Request.QueryString.ToString());
        }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
        <form id="form1" runat="server">
            <asp:Login id="Login1" runat="server" 
                DestinationPageUrl="terms.aspx">
            </asp:Login>
        </form>
    </body>
</html>

答案 1 :(得分:1)

web.config 文件中:

<location path="Default.aspx">
    <system.web>
        <authorization>
            <allow roles="Administrator, User, AdditionalUser" />
        </authorization>
    </system.web>
</location>

ASP.NET Forms Auth Allowing access to specific file in subdirectory when all others should be denied

http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx

答案 2 :(得分:1)

首先,您似乎不允许您的用户John。您可能还想尝试从配置文件的特定部分中提取身份验证部分:

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="Login.aspx" defaultUrl="Report.aspx">
        <credentials passwordFormat="Clear">
          <user name="John" password="pass@432"/>
        </credentials>
      </forms>
    </authentication>
  </system.web>

  <location path="Report.aspx">
    <system.web>
      <authorization>
        <allow users="John"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>