2014-10-18 46 views
0

我正在使用MVC 5并且有一个包含对控制器的jQuery Ajax调用并检索一些数据的View。之前我无法制作这个Ajax GET,因为控制器被标记为[Authorize],所以我将该方法标记为[AllowAnonymous]在MVC控制器中确定ASP.NET身份验证的用户JsonResult方法

此时我需要确定已验证的用户,但User.Identity显示为IsAuthenticated = false。这是有道理的,但我需要知道如何在此方法中获得用户的身份。下面是方法:

[AllowAnonymous] 
[AcceptVerbs(HttpVerbs.Get)] 
public JsonResult GetDesignParams(string countrycode) 
{ 
    ApplicationUser user = UserManager.FindById(User.Identity.GetUserId()); 
    if (user != null) 
    { 
     ... do something ... 
    } 

    ... do something else ... 

    return Json(rules, JsonRequestBehavior.AllowGet); 
} 

有没有这个程序中获取用户的身份,而不从客户端Ajax GET传递用户ID的方法是什么?

+0

如果你想知道用户的身份,你需要验证他们的身份 - 即你需要Authorize属性,或者您需要以某种其他方式禁用匿名访问。你说当你这样做时,你“无法做出这个Ajax GET” - 这是你需要解决的问题。如果你自己无法解决,请提供更多详细信息 - 例如你怎么做认证? – Joe 2014-10-18 19:33:56

+0

我删除了[[AllowAnonymous]]属性,现在'Identity.IsAuthorized'等于true。我不记得为什么我觉得我需要让我的JsonResult方法允许匿名。你的评论让我重新思考这个问题,我认为这是一个答案。如果你想创建一个答案,那么不需要在控制器中匿名获取Ajax GET方法和/或使它们匿名将导致User.Identity.IsAuthenticated = false。谢谢你指点我这个方向。 – rwkiii 2014-10-18 21:41:00

回答