我构建了一个主要是客户端的应用程序(HTML / CSS / Angular),它调用Web API后端进行数据检索。很标准的东西。但是,我们位于防火墙后面并使用Windows身份验证来传递当前登录的用户。我已经筋疲力尽,试图确定如何简单地检索当前登录用户的用户名以传递给Angular,以便我可以将其传递给Web API。
有什么建议吗?
到目前为止,我已经创建了一个< script>我的HTML头部中的部分并将用户名检索到本地变量中,如下所示:
<script type="text/javascript">
var loggedOnUser = '<%= Request.ServerVariables["REMOTE_USER"] %>';
console.log('logged on user is ' + loggedOnUser);
</script>
问题在于我总是回到一个空字符串(好吧,实际上根本没有值)。
我使用的控制器如下所示:
public class AuthenticationController : ApiController
{
private static Logger logger = LogManager.GetCurrentClassLogger();
public IHttpActionResult Get(string activeDirectoryDomainName, string username)
{
string user = HttpContext.Current.User.Identity.Name;
logger.Debug("user: " + user);
return Json(BLL.GetAuthenticationInfo(activeDirectoryDomainName, username));
}
}
来自控制器的记录结果也是空的。
答案 0 :(得分:2)
您的服务器应该进行验证并检查用户是谁,而不是角度应用程序告诉服务器他们是谁(不安全!)。
如果您只想显示用户名,您应该可以调用web api并让它返回用户名(这样你可以看到他们认证的对象)
如果您要将Razor / cshtml文件作为视图/布局返回,则可以在此处添加用户名@User.Identity.Name