2013-04-09 104 views
0

用户创建帐户后,他/她需要创建一个配置文件,用于提交将用于信件的一些信息。我有2个这样的控制器需要来自用户配置文件的信息。如何创建派生自AuthorizeAttribute的自定义属性?

我试图创建一个属性来检查用户是否已经创建了配置文件,然后让他访问任何操作方法。如果不是,则应该将用户重定向到配置文件页面

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; 

为什么给空?然而,这是我获得登录用户名的方式。

回答

1

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

还可以考虑改变你的班级名称,使其更短,但也有意义,如RequireProfileAttribute

+0

谢谢,它的工作。唯一的问题是它将用户重定向到登录页面。我想将用户重定向到Profile页面,即Controller = UserInfo和action = ManageProfile()。 – Richard77 2013-04-10 01:53:37

+0

没关系。本文回答这个问题:http://stackoverflow.com/questions/13284729/asp-net-mvc-4-custom-authorize-attribute-how-to-redirect-unauthorized-users-to?rq=1 – Richard77 2013-04-10 03:02:21

相关问题