【问题标题】:Cannot access to User.Identity under OnActionExecuting(ActionExecutingContext filterContext)无法在 OnActionExecuting(ActionExecutingContext filterContext) 下访问 User.Identity
【发布时间】:2012-10-25 21:06:29
【问题描述】:
我不确定我错过了什么,但我真的无法参考
User.Identity下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)
有什么办法解决吗?
【问题讨论】:
标签:
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 是否为空