Asp.net mvc 4 比较HttpContext.User.Identity.Name

Asp.net mvc 4 比较HttpContext.User.Identity.Name,asp.net-mvc-4,Asp.net Mvc 4,我正在尝试: string username = httpContext.User.Identity.Name.ToString(); if (u.Equals(username)) { authorise = true; } 域名和用户名完全相同,字母对字母,反斜杠对反斜杠,大写字母对大写字母等。。但变量授权仍然是错误的。不知道为什么。我开始怀疑是否有一种方法被认为是更好的实践方法。这可能是某种不匹配。我将在这里编写一个单元测试来验证您的假设 反斜杠的转义方式可能不同。你可以尝试在没

我正在尝试:

string username = httpContext.User.Identity.Name.ToString();
if (u.Equals(username))
{
    authorise = true;
}

域名和用户名完全相同,字母对字母,反斜杠对反斜杠,大写字母对大写字母等。。但变量授权仍然是错误的。不知道为什么。我开始怀疑是否有一种方法被认为是更好的实践方法。这可能是某种不匹配。我将在这里编写一个单元测试来验证您的假设

反斜杠的转义方式可能不同。你可以尝试在没有这些的情况下进行匹配

function string CleanAndTrim(string user){
    var cleaned = user.Replace(@"\", "");
    cleaned = user.Replace(@"/", "")
    return cleaned.ToLower().Trim();
}

if(CleanAndTrim(u)==CleanAndTrim(username){
  authorise = true;
}

为什么要对字符串调用
.ToString()
?为什么要使用if语句来设置布尔值?--直接指定布尔值。试试这个:

string username = httpContext.User.Identity.Name;
authorise = u.Equals(username);

我现在不担心最佳实践,因为您需要先了解基本知识。

问题是什么?你说它们匹配,并且它被设置为true,这是我所期望的。@dove它们匹配,但是它没有设置为true好的,你的问题是,你有权访问测试框架吗?