Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NETMVC存储CustomIdentity的最佳实践_Asp.net Mvc - Fatal编程技术网

Asp.net mvc ASP.NETMVC存储CustomIdentity的最佳实践

Asp.net mvc ASP.NETMVC存储CustomIdentity的最佳实践,asp.net-mvc,Asp.net Mvc,我正在使用ASP.NET MVC 3和实体框架4。当用户登录时,我想存储数据库中的一些信息,如ID、名称等。因此,我创建了自己的CustomIdentity/CustomPrincipal,但我不想每次都强制转换,因此我创建了一个BaseController,用于转换身份: public class BaseController : Controller { public CustomIdentity CustomIdentity { get { return (CustomIdenti

我正在使用ASP.NET MVC 3和实体框架4。当用户登录时,我想存储数据库中的一些信息,如ID、名称等。因此,我创建了自己的CustomIdentity/CustomPrincipal,但我不想每次都强制转换,因此我创建了一个BaseController,用于转换身份:

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

我的所有其他控制器都从BaseController中进行了交互。但我认为这不是一个好的做法。有更好的方法吗?

我会使用扩展方法来避免额外的继承

public static CustomerIdentity Customizes(this IIdentity identity)
{
    return (CustomIdentity) identity;
}
这一点更容易发现,而且对于是否应该使用User.Identity或CustomerIdentity也没有混淆。当你需要身份的时候

var identity = User.Identity;
当你需要额外的财产时

var identity = User.Identity.Custmoized();