【问题标题】:Windows Authentication for Single Page in CMS siteCMS 站点中单页的 Windows 身份验证
【发布时间】:2014-09-18 12:46:33
【问题描述】:
我遇到了一种情况,需要一些帮助。
我有一个 CMS 站点,其中单独文件夹中的 2 个页面是用于管理目的的管理页面。他们需要启用 Windows 身份验证。这就是我所做的。
在 IIS 中,我为整个站点启用了匿名身份验证并禁用了 Windows 身份验证。
我仅为特定文件夹启用了 Windows 身份验证,并为用户授予了对该文件夹的读取权限。
一切正常。当弹出窗口打开并且我提供我的 Windows 凭据并对其进行身份验证时,当我尝试查看 System.Web.HttpContext.Current.User.Identity.Name 时使用我的 .net 应用程序,我得到“sitecore\Admin”而不是获取我当前的 Windows 用户 ID。对此的任何帮助将不胜感激!!!
【问题讨论】:
标签:
c#
asp.net
authentication
iis
sitecore
【解决方案1】:
单独通过 IIS 对文件夹启用 Windows 身份验证只会保护文件夹,并且不会绑定到 Sitecore 成员资格提供程序,因此不会设置当前用户的身份。当页面加载时,您必须自己在自定义管理页面上完成该部分。
您可以通过从LOGON_USER 服务器变量中获取用户名来做到这一点,如下所示:
var username = Context.Request.ServerVariables["LOGON_USER"];
然后您可以通过调用Sitecore.Security.Authentication.AuthenticationManager.Login 方法来更改当前用户的身份,如下所示:
var success = Sitecore.Security.Authentication.AuthenticationManager.Login(userName, false);
if (!success)
{
// Handle login failure.
}