Html .ASPX:如何将web访问限制为仅登录用户?
► 问题:任何人都可以访问网页,但我只希望登录用户获得访问该网页的授权Html .ASPX:如何将web访问限制为仅登录用户?,html,.net,vb.net,iis,.aspxauth,Html,.net,Vb.net,Iis,.aspxauth,► 问题:任何人都可以访问网页,但我只希望登录用户获得访问该网页的授权 背景: Web服务器=IIS 8 服务器操作系统=Windows Server 2012 Framework=.NET4.5 环境=。\WebFolder\logon.aspx,。\WebFolder\inside.html 网站=保护html页面(“inside.html”)的简单登录页面(“logon.aspx”) 用户=外部人员(即,非内部网) 示例URL: A. "www.webpage.com/log
背景:
- Web服务器=IIS 8
- 服务器操作系统=Windows Server 2012
- Framework=.NET4.5
- 环境=。\WebFolder\logon.aspx,。\WebFolder\inside.html
- 网站=保护html页面(“inside.html”)的简单登录页面(“logon.aspx”)
- 用户=外部人员(即,非内部网)
A. "www.webpage.com/logon.aspx"
B. "www.webpage.com/inside.html"
预期结果:
每个人都可以访问“logon.aspx”页面
只有登录的用户才能访问“inside.html”页面
任何直接访问“B”的尝试都将触发重定向到“a”
无需额外使用程序代码 先前的尝试: 我一直在摆弄web.config文件(身份验证和授权),但没有用(501服务器错误、401授权错误、运行时应用程序错误)
Web.Config文件:
一句话:我确信这是一个非常基本/容易配置的东西,只是到目前为止我还没能做到。另外,我不想为了完成一项看似基本的任务而编写任何额外的代码 提前谢谢 好吧,我想出来了(7小时后)。它需要四件事(基于示例文件结构):
1.使用
表单身份验证
模块
VS2012→ 项目→ 您的凭据/身份验证代码→ 使用表单身份验证。重定向自登录(\u var1\u,\u var2\u)
而不是响应。重定向(inside.html)
2.在
web.config
文件中添加新节点
4.向“web.config”文件添加位置标记授权限制
请参阅我的评论(下文),了解这四个部分的解释。好的,我想出来了(7小时后)。它需要四件事(基于示例文件结构):
1.使用
表单身份验证
模块
VS2012→ 项目→ 您的凭据/身份验证代码→ 使用表单身份验证。重定向自登录(\u var1\u,\u var2\u)
而不是响应。重定向(inside.html)
2.在
web.config
文件中添加新节点
4.向“web.config”文件添加位置标记授权限制
请参阅我的评论(下文),了解对这四个部分的解释。能否尝试将logon.aspx页面重命名为login.aspx?或者,向web.config文件中的身份验证节点添加新的表单节点,如:。您可以发布web.config文件的相关示例吗?@SeanOB:New-trument:将“logon.aspx”更改为“login.aspx”。结果=失败(无更改)。请在上面查看新的“web.config”部分。谢谢。我想你需要使用会员服务提供商,或者类似的东西。基本思想是将用户标记为已登录或未登录。一个简单的实现是检查页面的加载方法(可能在正确的回发事件下):
如果不是IsLoggedIn(),则Response.Redirect(“somepage.aspx”)如果@SeanOB,则结束,谢谢,伙计们。我想我有一个解决这个.aspx到.html文件限制的方法(7个多小时后:)。你能尝试将logon.aspx页面重命名为login.aspx吗?或者,向web.config文件中的身份验证节点添加新的表单节点,如:。您可以发布web.config文件的相关示例吗?@SeanOB:New-trument:将“logon.aspx”更改为“login.aspx”。结果=失败(无更改)。请在上面查看新的“web.config”部分。谢谢。我想你需要使用会员服务提供商,或者类似的东西。基本思想是将用户标记为已登录或未登录。一个简单的实现是检查页面的加载方法(可能在正确的回发事件下):如果不是IsLoggedIn(),则Response.Redirect(“somepage.aspx”)如果@SeanOB,则结束,谢谢,伙计们。我想我有一个解决这个.aspx到.html文件限制的方法(7个多小时后:)#1。您需要使用FormsAuthentication对象,因为它将凭据传递给服务器。这很重要,因为管理.html页面的是服务器(而不是应用程序)。Response.Redirect命令无法执行此操作。您必须将HTMLHandler添加到web.config
文件中,因为它告诉IIS让您的.net应用程序控制.html页面的连接。这是至关重要的(因为没有它,步骤4将无法工作)。将defaultUrl
属性添加到forms
标记中非常重要,这样FormsAuthentication.RedirectFromLogin将始终到达您的目标(“inside.html”)。如果未指定ReturnUrl
变量,则RedirectFromLogin命令将导航到此DefaultUrl
。验证失败后,步骤2中的loginUrl
值成为ReturnUrl
值。您必须创建此位置路径授权,以便系统防止未经授权访问您的html文件(“inside.html”)。deny users=“?”
项告诉系统阻止未经授权访问您的受限html页面。您需要使用FormsAuthentication对象,因为它将凭据传递给服务器。这很重要,因为管理.html页面的是服务器(而不是应用程序)。Response.Redirect命令无法执行此操作。您必须将HTMLHandler添加到web.config
文件中,因为它告诉IIS让您的.net应用程序控制.html页面的连接。这是至关重要的(因为没有它,步骤4将无法工作)。在表单中添加defaultUrl
属性非常重要
<system.webServer><handlers><add name="HTMLHandler" type="System.Web.StaticFileHandler" path="*.html" verb="GET" /></handlers>
<forms name=".ASPXFORMSAUTH" loginUrl="logon.aspx" defaultUrl="inside.html" protection="All" timeout="1" path="/" slidingExpiration="false" requireSSL="false" />
<location path="inside.html"><system.web><authorization><deny users="?" /></authorization></system.web></location>