2012-01-14 132 views
2

我在实体框架4中使用ASP.NET MVC 3.当用户登录时,我想存储一些来自数据库的信息,如ID,名称等。创建了自己的CustomIdentity/CustomPrincipial,但我不希望每次施放时间,所以我创建了一个BaseController谁投的身份:ASP.Net MVC存储CustomIdentity的最佳实践

public class BaseController : Controller 
{ 
    public CustomIdentity CustomIdentity { get { return (CustomIdentity)User.Identity; } } 
} 

和我的所有其他控制器从BaseController interhit。但我不认为这是一个很好的做法。有没有更好的办法?

回答

1

我会用一个扩展方法,以避免额外的继承

public static CustomerIdentity Customizes(this IIdentity identity) 
{ 
    return (CustomIdentity) identity; 
} 

这是一个小更容易发现并没有混淆是否应该使用User.Identity或CustomerIdentity。当你需要身份

var identity = User.Identity; 

,当你需要额外的属性

var identity = User.Identity.Custmoized(); 
+0

真的很好,它的伟大工程!谢谢! – 2012-01-14 23:18:37