我有一个ASP.NET网站.
我希望未登录的用户被自动(重新)定向到登录页面,例如,
~/Account/Login.aspx
Run Code Online (Sandbox Code Playgroud)
就像现在一样,用户default.aspx无需登录即可访问页面(例如).
注意:我正在操作(可能是错误的)假设ASP.NET在每个(和任何)页面加载之前都有自己的身份验证周期.
更新 @asawyer提供了一个链接,虽然没有帮助回答问题,但确实提供了一个漂亮的图形:

我有一个web.config启用窗体身份验证的文件:
<?xml version="1.0"?>
...
<configuration>
...
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" name=".ASPXFORMSAUTH" slidingExpiration="true"/>
</authentication>
...
</system.web>
...
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我浏览到"默认"页面时,我能够查看它,例如,
GET http://localhost:53149/WebSite/ HTTP/1.1
Host: localhost:53149
Run Code Online (Sandbox Code Playgroud)
我得到的页面内容:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Run Code Online (Sandbox Code Playgroud)
换句话说,而不是被强迫登录到的网站,我不是被迫在登录到Web站点.
这可能与我的浏览器在本地运行到Web服务器的事实有关; 但我正在使用Forms,而不是Windows(Passport而不是None)认证.
Ian*_*oyd 27
我找到了答案.
问题:如何自动将未登录的用户重定向到登录页面?
答:拒绝匿名用户访问
为了自动将未登录的用户重定向到登录页面,您需要拒绝匿名访问"所有"页面.这是在站点的web.config文件中完成的:
web.config中
<?xml version="1.0"?>
<configuration>
<system.web>
...
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
该特殊?标记来表示匿名用户.
这与"告诉表单身份验证" 相结合,其中"登录"页面为:
<?xml version="1.0"?>
<configuration>
<system.web>
...
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
意味着任何任何匿名用户都将自动重定向到登录页面.
一个似乎从未被问过的问题得到了回答,每个人都活着.