在Azure上托管的ASP.NET网站上,我需要保护页面,以便只有特定用户才能访问它。由于页面中使用了javascript库,它只有在通过HTTP提供时才能正常工作,但除非通过HTTPS提供页面,否则ASP.NET身份验证将不允许访问。
为了限制对安全页面的访问,我将Web.config文件添加到包含页面的文件夹中:
<configuration>
<system.web>
<authorization>
<allow roles="Admin" />
<allow roles="Map Viewer" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
主web.config文件设置表单身份验证。
<authentication mode="Forms">
<forms loginUrl="~/account/login/"
requireSSL="true"
timeout="2880" />
</authentication>
如果您通过https访问受保护的页面(例如https://example.com/Map),这就像魅力一样。系统会提示您登录,输入凭据,然后转到该页面。如上所述,如果通过http提供,页面将无法正常工作。但是,ASP.NET身份验证/授权不允许您访问它: 1.如果您未登录并尝试通过http访问该页面,则在您登录后会重定向到站点主页。 2.如果您已登录并尝试通过http访问该页面,即使您已经登录,也会显示登录屏幕。
网站上没有其他安全页面要求HTTP正常工作,这种基于表单的身份验证过程多年来一直适用于这些页面。
答案 0 :(得分:0)
将requireSSL
属性设置为false
,或将其删除(如果未指定值,则requireSSL
为false)。如果requireSSL
设置为true,则服务器将不接受身份验证cookie,除非它们通过HTTPS连接发送到服务器。删除此属性后,服务器将接受来自HTTP和HTTPS的身份验证cookie。