ABP vNext微服务架构详细教程——身份管理服务
1
框架搭建
ABP vNext创建包含app和module两种模板,其中app方式所创建的模板包含用户、角色、权限管理,ABP基础配置IdentityServer的基础配置数据等功能。module模式是一个比较干净的服务,里面不包含默认业务功能。
ABP vNext创建包含app和module两种模板,其中app方式所创建的模板包含用户、角色、权限管理,ABP基础配置IdentityServer的基础配置数据等功能。module模式是一个比较干净的服务,里面不包含默认业务功能。
这里我们构建身份管理服务,需要用到ABP vNext框架自带的用户角色管理模块,所以采用app模式构建项目源码。项目名称为Demo.IdentityManager,构建命令如下:
abp new Demo.Identity -t app --ui none --separate-identity-server -dbms MySQL
这里
-t app 表示application模式 ,
--ui none 表示不使用UI界面,
--separate-identity-server 表示将身份认证服务IdentityServer和当前项目服务分开,
-dbms MySQL 表示使用MySQL数据库。
执行命令后,执行目录中会出现aspnet-core文件夹,将该文件夹中所有内容拷贝至项目解决方案的service/identitymanager目录下,将其中的IdentityServer项目移动至identityserver文件夹下,若直接添加IdentityServer项目到解决方案会报错找不到common.props,这是因为相对路径发生变化,可将identitymanager目录下的common.props文件复制一份到总解决方案sln所在目录
目录调整完成后,使用sln构建工具添加所有项目到总解决方案。添加后项目结构如下图:
因为IdentityServer项目相对路径发生变化,需删除并重新添加该项目对EntityFrameworkCore项目的引用。
如果不想使用ABP自带的单元测试可以将解决方案文件夹test及其下项目删除。
2
初始化数据库
在ABP vNext框架application模式代码创建的数据库中,会包含用户、角色、权限、配置等功能的表,以及IdentityServer框架各项数据库持久化数据的表。
application模式下所创建的项目中的DbMigrator项目包含创建、执行数据迁移并初始化数据的功能。
正常情况下我们修改DbMigrator项目的配置文件appsettings.json中的ConnectionStrings:Default字段改为我们所使用的数据库并执行该项目,即可创建所需要的数据库
但我当前所用版本6.0.1有一个小Bug,运行DbMigrator项目会卡在创建数据迁移这一步,需要我们修改数据库链接字符串后手动创建数据迁移并执行,使用dotnet-ef命令执行如下:
在EntityFramework项目目录下进入cmd命令行
确保dotnet-ef命令已安装并更新至最新版本,具体可参考:https://docs.microsoft.com/zh-cn/ef/core/get-started/overview/install
添加数据迁移
dotnet-ef migrations add InitDb
执行数据迁移
dotnet-ef database update -s ..\Demo.Identity.DbMigrator
执行完成后,数据库已创建成功,运行DbMigrator项目可完成数据初始化。
3
调整及测试
身份管理服务运行项目为Identity.HttpApi.Host,将此项目设置为启动项。
修改Identity.HttpApi.Host项目中的配置文件appsettings.json,修改数据库链接字符串:ConnectionStrings:Default,及Redis地址Redis:Configuration,按照服务规划我们给该服务设置的规划的端口号为5000,所以在appsettings.json中添加配置项:
"urls": "http://*:5000"
默认情况下,ABP vNext框架自带的用户角色权限等接口需要授权用户才可以访问,依据我们之前的设计,微服务中的各项服务不需要二次权限验证,这里我们全局忽略权限验证,否则调用时会报401错误。忽略方法为在IdentityHttpApiHostModule的ConfigureServices方法中添加以下内容:
context.Services.AddAlwaysAllowAuthorization();
以控制台方式启动项目Identity.HttpApi.Host项目,启动完成后通过浏览器访问http://localhost:5000/swagger/index.html,成功显示Swagger页面,测试/api/identity/users的Get方式接口,返回admin用户信息,说明服务配置成功。
end
更多精彩
关注我获得
ABP vNext微服务架构详细教程——身份管理服务相关推荐
- ABP vNext微服务架构详细教程——结束语
ABP vNext微服务架构详细教程--简介 ABP vNext微服务架构详细教程--架构介绍 ABP vNext微服务架构详细教程--身份管理服务 ABP vNext微服务架构详细教程--基础服务层 ...
- ABP vNext微服务架构详细教程——项目部署
1 基础配置 在之前的文章中,我们已经配置了Kubernetes集群并安装了管理工具Kubesphere,文章地址为:https://mp.weixin.qq.com/s/MgpdMv5A-fYxN7 ...
- ABP vNext微服务架构详细教程——架构介绍
总体架构 所有应用服务.API网关.身份认证服务均部署在Kubernetes容器中,由Kubernetes提供应用配置.服务治理.服务监控等功能. 客户端所有访问均通过Kubernetes的Nginx ...
- ABP vNext微服务架构详细教程——分布式权限框架(上)
1 简介 ABP vNext框架本身提供了一套权限框架,其功能非常丰富,具体可参考官方文档:https://docs.abp.io/en/abp/latest/Authorization 但是我们使用 ...
- ABP vNext微服务架构详细教程——简介
简介 该系列文章主要展示ABP vNext框架在微服务架构下的用法,提供一套可落地的技术实现思路,并演示各服务在Kubernetes下的部署方案. 基础概念 ABP vNext 基于ASP.NET C ...
- ABP vNext微服务架构详细教程——基础服务层
1 服务创建 在除身份管理相关服务以外的其他业务服务中,我们不需要包含用户角色权限管理功能模块,ABP vNext框架为我们提供了模块模式,其默认模板不包含身份管理相关模块,更适合用于搭建普通的业务微 ...
- ABP vNext微服务架构详细教程——分布式权限框架(下)
3 公共组件 添加公共类库Demo.Permissions,编辑Demo.Permissions.csproj文件,将 <Project Sdk="Microsoft.NET.Sdk& ...
- abp vNext微服务框架分析
abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来 ...
- 【转】abp vNext微服务框架分析
abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来 ...
最新文章
- [sso]搭建CAS单点服务器
- finished with exit code -1073740791 (0xC0000409)解决方案
- python自学书籍推荐豆瓣-入门python有什么好的书籍推荐?
- 8月21日至8月27日技术积累
- 通过实验取证:TCP三次握手的过程
- 如何写一个能被手机打开的C语言小程序,如何用C语言中一些简单的语句做一个小程序,能够输入一个字符就会弹出一句话...
- Apache常见配置错误
- dot pairs 点_Dott入局欧洲共享单车市场 明年3月伦敦巴黎推出
- 大数据系统软件创新平台与生态建设
- 苹果推出雷雳 3 Pro连接线:黑色编织设计 售价949元
- [论文阅读] (16)Powershell恶意代码检测论文总结及抽象语法树(AST)提取
- 免费下载文档:给你介绍几个实用的免费下载网址
- CSRF跨站请求伪造漏洞
- Python 爬虫入门(一)——爬取糗百
- 在linux下如何修改DNS地址
- Android手动创建活动并注册AndroidManifest.xml
- CTS测试中testYuvBurst[1]项
- take credit for用法
- springBoot 报警告 Could not find acceptable represent
- 如何利用阿里云服务器快照策略为数据备份
热门文章
- 微信上传图文消息素材40007,invalid media_id hint
- The type android.support.v4.view.ScrollingView cannot be resolved. It is indirectly referenced from
- IntelliJ IDEA代码分屏显示
- oracle sys可以登录,system权限不足,解决方法
- socket编程学习笔记
- 【操作系统】对操作系统的了解
- ubuntu 14.04 安装Java JDK
- Ruby:字符集和编码学习总结
- JavaScript执行环境 + 变量对象 + 作用域链 + 闭包
- 电脑pin重置_如果忘记了如何重置Windows PIN