在我的Web应用程序中,我想要两种不同的身份验证模式。 Windows 和表单。
我想要实现的目标:
出于不相关的原因,我需要在IIS中设置两个不同的站点。 一个站点使用Windows身份验证,另一个站点使用Forms。 我希望将网站映射到同一个项目。 唯一的区别应该是web.config文件,只需输入一行:
Web.config 1
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
Web.config 2
WL.JSONStore.destroy()
.then(function () {
// Handle success.
})
.fail(function (errorObject) {
// Handle failure.
});
一个简单的解决方案是简单地将两个站点映射到两个相同的项目,包含不同的配置。虽然这可能会导致未来维护方面的问题/困难,因为必须记住要对这两个项目发布新的更改。
“如果客户端尝试使用url XXX进入站点1,则应提示Windows Autentication(在浏览器中配置为支持SSO)。如果客户端尝试使用url yyy进入站点2,则应提示他们在表单登录中输入SQL用户的凭据。“
如果没有两个完全相同的项目,是否有可能实现我的愿望?
答案 0 :(得分:1)
使用配置和配置转换。默认情况下,您的站点提供两种配置:调试和发布。但是,您可以添加任意数量的内容。例如,您可以添加“Site1”和“Site2”(Build&gt; Configuration Manager ...)等配置。然后,右键单击Web.config文件并选择“添加配置转换”。如果展开Web.config
项,您现在会看到Web.Site1.config
和Web.Site2.config
。这些是你的变形。使用config transform syntax,您可以自定义每个<authentication>
标记。然后,当您发布站点时,只需为要发布的站点版本选择正确的配置。
答案 1 :(得分:0)
假设没有重叠,您可以使用web.config中的位置标记:
<location path="Some/Path">
<system.web>
<authentication mode="Forms" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="Another/Path">
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
路径是您的网址XXX和YYY。