Asp.net mvc 4 如何创建从属性派生的自定义属性?

Asp.net mvc 4 如何创建从属性派生的自定义属性?,asp.net-mvc-4,custom-attributes,authorize,Asp.net Mvc 4,Custom Attributes,Authorize,用户创建帐户后,他/她需要创建一个配置文件,在该文件中他/她提交一些将用于信函的信息。我有两个这样的控制器,需要从用户配置文件中获取信息 我正在尝试创建一个属性,在允许用户访问任何操作方法之前,该属性将检查用户是否已经创建了概要文件。如果没有,则应将用户重定向到配置文件页面 public class NotAuthorizedWithoutProfileAttribute : AuthorizeAttribute { protected override bool AuthorizeCo

用户创建帐户后,他/她需要创建一个配置文件,在该文件中他/她提交一些将用于信函的信息。我有两个这样的控制器,需要从用户配置文件中获取信息

我正在尝试创建一个属性,在允许用户访问任何操作方法之前,该属性将检查用户是否已经创建了概要文件。如果没有,则应将用户重定向到配置文件页面

public class NotAuthorizedWithoutProfileAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var userName = httpContext.Profile.UserName;
        var repository = new OWRepository();
        var userInfo = repository.GetUserInfo(userName);

        if (userInfo == null)
            return false;
        else
            return true;
    }
}
我遇到的问题是关于用户名的问题,即下面一行

var userName = httpContext.Profile.UserName;

为什么它是空的?然而,这就是我获取已登录用户名的方式

我不知道您的配置文件配置是什么,但使用
HttpContextBase.User.Identity.Name
获取用户名是最安全的


也考虑把你的类名改为更短,但也有意义,比如<代码> RealPrimeItgult。< /P>谢谢,它正在工作。唯一的问题是它将用户重定向到登录页面。我想将用户重定向到配置文件页面,即Controller=UserInfo和action=ManageProfile()。没关系。这篇文章回答了这个问题: