ASP.NET基本身份验证

5

我有一个基于基本身份验证的内部网站。

是否可能只有一个页面不要求凭据? 也就是说,只允许任何人访问该页面吗?

可以在web.config中为单个页面设置某些内容吗?


这是可能的,只需谷歌一下:“asp.net授权”... http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx - daryal
2
他为什么要谷歌呢?这是一个合理的问题,如果有人在这个网站上想做同样的事情,他应该能够在这个网站上搜索并找到答案。 - JonH
因为这个问题是重复的,所以请访问 https://dev59.com/43A65IYBdhLWcg3wyh57。 - daryal
3个回答

5

在你的web.config文件的configuration节点中添加以下元素:

<location path="aFolder/aPageToExclude.aspx">
     <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

欲了解更多信息和使用方法,请查看MSDN文档:位置元素(ASP.NET设置模式)


不确定那是否足够,但我已经考虑过了。会尝试并观察结果。谢谢。 - user1468537
嗯,它仍然要求凭据。这就是我有的 <location path="Page.aspx"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> 并且放置在 <configuration> 标签内。 - user1468537

1
我所做的是不使用ASP.Net身份验证。当用户输入用户名和密码时,我会检查数据库是否存在该用户名和密码的行,可以使用objDataSet.Tables[0].Rows.Count > 0进行检查。您可以将其放在“if”条件中,然后将用户名放入会话中,方法如下:Session["username"] = (这里是用户名变量)。然后,创建两个主页面,一个用于仅允许已登录用户访问的页面,另一个可供任何人访问。在仅允许已登录用户访问的主页面中,您可以检查会话数据是否为空。如果为空,您可以将该人重定向回登录页面。LoggedIn主页面可以保持不变。如果您已经有了一个主页面,则可以复制它并添加该条件。如果您尚未实现主页面,则可以将该条件放在需要用户登录才能访问该页面的每个页面的页面加载中。因为您使用的是会话而不是cookie,所以对于用户来说,攻击此系统会更加困难。

2
这并没有为接受的答案增添任何内容(这是正确的方法),恐怕我不建议任何人遵循这个建议。 - christophano

0

您需要覆盖您的 web.config 文件设置。
您需要创建一个文件夹并在该文件夹中创建另一个 web.config 文件。
然后将 Page.aspx 放入该文件夹中。
然后修改该 web.config 文件的代码如下:

<authentication mode="Forms">
</authentication>

注意:
1)您不必提及users=*,它会自动允许所有用户访问该文件夹下的页面。
或者
2)如果您已经在使用目录结构来管理页面,那么您可以将page.aspx保留在与登录页面相同的级别上。

“site”使用基本身份验证,因此没有登录页面。 - user1468537

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接