【问题标题】:Cannot access to User.Identity under OnActionExecuting(ActionExecutingContext filterContext)无法在 OnActionExecuting(ActionExecutingContext filterContext) 下访问 User.Identity
【发布时间】:2012-10-25 21:06:29
【问题描述】:

我不确定我错过了什么,但我真的无法参考 User.IdentityOnActionExecuting(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)

有什么办法解决吗?

【问题讨论】:

    标签: c# .net asp.net-mvc authorization authorize-attribute


    【解决方案1】:

    我找到了解决办法。

    应该是

    filterContext.HttpContext.User.Identity.IsAuthenticated
    

    【讨论】:

      【解决方案2】:

      我相信您应该使用 AuthorizeAtribute 而不是 ActionFilter。试试这样的:

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

      【讨论】:

        【解决方案3】:
        filterContext.RequestContext.HttpContext.Request.IsAuthenticated
        

        有效!并且无需检查 id User 或 User.Identity 是否为空

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-15
          • 2018-10-24
          • 1970-01-01
          • 2013-04-22
          • 2016-01-10
          • 2018-11-17
          • 1970-01-01
          相关资源
          最近更新 更多