0

用户创建帐户后,他/她需要创建一个个人资料,他/她在其中提交一些将用于信件的信息。我有 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;
    }
}

我遇到的问题是关于用户名,即以下行

var userName = httpContext.Profile.UserName;

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

4

1 回答 1

1

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

还可以考虑将您的班级名称更改为更短但也有意义的名称,例如RequireProfileAttribute.

于 2013-04-09T06:49:20.483 回答