将登录用户传递给Angular服务(Windows身份验证)

时间:2014-10-16 18:47:17

标签: asp.net-web-api windows-authentication

我构建了一个主要是客户端的应用程序(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));
    }
 }

来自控制器的记录结果也是空的。

1 个答案:

答案 0 :(得分:2)

您的服务器应该进行验证并检查用户是谁,而不是角度应用程序告诉服务器他们是谁(不安全!)。

如果您只想显示用户名,您应该可以调用web api并让它返回用户名(这样你可以看到他们认证的对象)

如果您要将Razor / cshtml文件作为视图/布局返回,则可以在此处添加用户名@User.Identity.Name