【发布时间】:2012-07-19 19:31:19
【问题描述】:
我正在运行一个需要能够读取当前用户的登录 ID 的网页。这是我正在使用的代码:
string id = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
目前这会返回正确的登录名,但是当我在此方法中使用它时:
protected Boolean isPageOwner()
{
string id = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
alert("User: " + id);
if (id.Equals(pageOwnerID))
{
return true;
}
if (accessPermission.ContainsKey(id))
{
return true;
}
return false;
}
即使返回的 id 与 pageOwnerID 相同,该方法也会返回 false。我真的不确定我的哪一部分有问题。
附带说明一下,我的登录 ID 的格式为 string1/string2,但代码将其检索为 string1 + string2 而不带斜线。
感谢任何建议。
问候。
【问题讨论】:
-
id和pageOwnerID的确切字符串是什么。从您的描述中听起来可能是abc/123和abc123,这是行不通的。 -
当我在我的本地机器上开发这个页面时,我能够以“abc/123”的形式检测到我的登录ID,并带有斜杠。一旦我在服务器上部署了页面,登录 id 就被检索到了,没有斜线 - 所以 abc123.因此,我更改了 pageOwnerID 以删除斜线,但相等性测试神秘地失败了。
-
为什么不同时记录/输出
id和pageOwnerID以便进行比较。显然它们不一样。 -
你确定不是反斜杠吗,\?
-
不要使用WinIdentity,使用Request.User