asp.net mvc 5 GetUser from ActiveContext



我们有一个 asp.net mvc 5 Web 应用程序,标识为 2 asp.net。在活动上下文中,我从"HttpContext.User.Identity.Name"中获取实际用户。

现在,外部服务必须获取有关用户的信息,该用户实际上是通过HTTPGet请求登录的。

我想我可以以相同的方法请求用户名。但是用户始终是字符串.空。我认为这是因为下面的帖子不在同一个 httpcontext 中?!?!

    [HttpGet]
    [AllowAnonymous]
    public ActionResult SupporterIdentity()
    {          
        if (HttpContext.User.Identity.Name == string.Empty || HttpContext.User.Identity.Name == null)
        {
            return Json(new { success = "false", msg = HttpStatusCode.Unauthorized }, JsonRequestBehavior.AllowGet); ;
        }
        var appUser = UserManager.FindByNameAsync(HttpContext.User.Identity.Name).Result;
        AppAuthentication oa = new AppAuthentication();
        oa.Identity = new AppIdentity();
        oa.Identity.id = appUser.Id.ToString();
        oa.Identity.name = appUser.UserName;
        oa.Identity.role = MemberDataIdentityModel.UserRole.ToString(); ;           
        return Json(oa, JsonRequestBehavior.AllowGet);
    }

如何从正确的上下文中获取活动用户?什么是正确的方法?

那么,如果外部进程正在执行GET请求,那么该请求是否应该首先进行身份验证?

如果我登录到您的系统,我会得到一个包含身份验证详细信息的 cookie。这是我的cookie和我的登录信息。其他一些进程可能会在您的/SupporterIdentity上调用 GET,但该请求与我不同的 cookie 不附带,并且该请求未经过身份验证。因此,对于该过程,没有用户登录,因此您正确地获取String.Empty而不是用户名。

只需从该操作中删除[AllowAnonymous]并尝试 - 您应该获得该进程 GET 请求的登录页面。

另一件事 - 您谈论登录用户,就好像永远不应该有 2 个用户同时登录一样。但是可能有很多用户登录。那么GET请求应该返回哪个用户名呢?

相关内容

  • 没有找到相关文章

最新更新