2012-11-05 35 views
9

Tôi không chắc chắn những gì tôi đang thiếu nhưng tôi thực sự không có thể tham khảo User.Identity dưới OnActionExecuting(ActionExecutingContext filterContext)Không thể truy cập để User.Identity dưới OnActionExecuting (ActionExecutingContext filterContext)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Security; 
using System.Web.Routing; 

..... 

    public class RealUserAttribute : ActionFilterAttribute 
    { 
      public override void OnActionExecuting(ActionExecutingContext filterContext) 
      { 
       /// if (User.Identity.IsAuthenticated) 

Bất kỳ đầu mối làm thế nào để sửa chữa nó?

Trả lời

7

Tôi đã tìm thấy giải pháp.

Nó phải là

filterContext.HttpContext.User.Identity.IsAuthenticated 
9

Tôi tin rằng bạn nên sử dụng AuthorizeAtribute thay vì ActionFilter. Hãy thử một cái gì đó như thế này:

using System.Web; 
using System.Web.Mvc; 

public class AuthorizeUser : AuthorizeAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     var id = filterContext.RequestContext.HttpContext.User.Identity; 
    } 
}