如何创建派生自AuthorizeAttribute的自定义属性?

时间:2013-04-09 05:26:02

标签: asp.net-mvc-4 custom-attributes authorize

用户创建帐户后,他/她需要创建一个配置文件,他/她提交一些将使用字母的信息。我有2个这样的控制器需要用户配置文件中的信息。

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

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;
    }
}

我遇到的问题是涉及userName,即以下行

var userName = httpContext.Profile.UserName;

为什么它会给出null?然而,这就是我获取登录用户名称的方式。

1 个答案:

答案 0 :(得分:1)

我不知道您的个人资料配置是什么,但使用HttpContextBase.User.Identity.Name获取用户名是最安全的。

另外,请考虑将您的班级名称更改为更短但更有意义的内容,例如RequireProfileAttribute