我决定制作一个项目,在Vue中创建前端,在.net core和Identity Server 4中创建后端API。
基于干净的架构模式,我需要将解决方案分为项目: -身份服务器 -API -基础设施(实体框架和模型) -核心 -vue应用
我已将项目设置为使用内存中的对象,并已成功使用外部帐户和alice / bob本地帐户登录。
现在,我需要创建迁移以创建将存储这些用户(和其他对象)的数据库。
在项目中包括身份服务器之前: 我已经为基础结构项目创建了一个类库,其中包括EF和Identity(不是身份服务器,而是身份),现在,我有模型和ApplicationDbContext,还有一个模型ApplicationUser,它继承了IdentityUser(目的是使用我的扩展AspNetUser表)自己的属性)。文件夹迁移仅保留使用其他模型创建身份表的数据库的初始化。 在我的api项目(startup.cs)中,我已经将ApplicationDbContext注册为服务并创建了数据库。
之后在项目中包括身份服务器: 从js客户端快速入门开始,身份服务器可以登录,但是使用内存用户或外部登录即可。现在,我想让我的应用程序可以使用一个数据库。
我已阅读以下内容: http://docs.identityserver.io/en/latest/quickstarts/7_entity_framework.html 并成功地在身份服务器项目中创建了迁移(希望在基础架构中迁移),更新数据库,现在我有了一个数据库,其中包含身份表(AspNetUser,AspNetRoles ...)以及从身份服务器生成的新表(客户端, ClientScopes ...)和我的旧项目模型。
除ValuesController之外,我的API尚无任何控制器,我的IdentityServer Quickstart具有用于帐户,同意书,设备,诊断,授权和归属的控制器,视图和视图模型,而我的基础结构类库具有带有迁移的EF(上下文和模型)。
在我的API启动中,我将ApplicationDbContext作为服务添加到引用基础结构项目的服务,而MigrationsAssembly名称为基础结构。 在我的Identity Server启动中,我使用相同的选项添加了配置存储和可选存储(连接字符串与api和基础结构位于同一数据库中)。
在我的Vue应用程序中,我使用iodc-client作为身份验证与身份服务器通信,我将我的应用程序路由设置为经过身份验证,如果没有用户登录,您将被重定向到IdentityServer /帐户/登录页。显示两个选项,本地登录名和外部google登录名,并且以外部方式登录时,没有用户对象添加到数据库中。我尚未创建注册,因此在使用alice / bob帐户(在内存中)时,它们不会被写入数据库。 iodc-client登录用户,他们可以浏览经过身份验证的路由。
问题: 1.我真的需要生成两个框架表吗? 2.如果可以,我将在哪个表(框架)中写入用户,以及如何在代码中获取该类,以便可以用自己的道具进行扩展? 3.控制器不是由我修改的,它们是由模板生成的,所以我想我需要一种使这些控制器与我的上下文和EF配合使用以写入和保存更改的方法。如果是这样,那是什么责任?我是否会在我的api中创建另一个帐户控制器,该帐户将被要求在该帐户中创建和写入该用户,或者由于我只是在学习身份服务器,所以我不熟悉该框架吗?
在此先感谢您阅读和理解。抱歉,很长的帖子。