Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html .ASPX:如何将web访问限制为仅登录用户?_Html_.net_Vb.net_Iis_.aspxauth - Fatal编程技术网

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”)
  • 用户=外部人员(即,非内部网)
示例URL:

    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>