我需要开始一个新的mvc项目,并且我一直有关于asp身份的问题,永远不知道在哪里放它!
我打算组织这样的解决方案:
> ProjectWebUI – 具有asp身份框架的mvc应用程序(由具有身份验证的Internet模板制成)
> ProjectDataAccessLayer – 使用dapper作为数据库访问技术的存储库类
> ProjectWebAPI – Web服务
但是我有点困惑,在开始编码之前我需要更有经验的人的建议(因为到目前为止我的所有项目都只是一个有数据访问权限的项目):
>在使用标准Entity Framework进行数据访问的WebUI项目中使用asp标识并在单独的程序集中使用dapper进行其他数据访问是不是一个好主意?
>如果asp身份在WebUI项目中,我是否有一些问题需要接收对WebAPI项目的身份验证访问?
最佳答案 这就是我组织我最近的一个项目的方式:
> Common – 这是解决方案中的核心项目.它包含所有域实体以及继承自ASP.NET Identity Framework的IdentityUser类的ApplicationUser类.通常,此类位于新的ASP.NET MVC项目模板中;我决定将它放入核心库,因为它代表了更高层和抽象级别可能需要的通用实体.因此,Common引用了Microsoft.AspNet.Identity.Core和Microsoft.AspNet.Identity.EntityFramework程序集.
> DataAccess – 此项目引用Common库并包含Entity Franework DatabaseContext以及一些存储库.我使用Code First方法,我的DatabaseContext继承自IdentityDbContext< ApplicationUser>.因此,它为我提供了一个很好的数据库结构,其中包含用户和角色以及其他ASP.NET标识的表以及表示Common项目中我的自定义业务实体的表,因此我可以轻松地将自定义实体与Identity对象连接起来.
> WebApi – 这是一个使用DataAccess和Common库的REST服务.所有授权和身份验证作业都在此处使用令牌身份验证完成.
> Web – 这只是我的REST服务的Web客户端.
因此,回答您的问题:如果ASP.NET Identity Identity和Entity Framework数据库上下文非常小且易于管理,您可以将它们保留在单个项目中;否则,最好离开默认项目模板并为每个主要应用程序模块引入图层.