mysql主从配置duxi_[从0到1搭建ABP微服务] - 搭建授权服务
一、简介
授权中心是微服务架构中最为核心重要的环节,不仅为web、app等客户端提供身份授权服务,还对其他微服务提供身份认证服务。ABP微服务架构中使用identityServer4框架进行身份管理,并且ABP对ids4框架进行了进一步封装,足以提供强大的统一授权服务。
二、创建工程
创建AuthServer.Host服务
在AuthServer目录中创建解决方案,不启用https配置
三、引用模块
在刚刚创建的空 asp.net core项目中引用 .net core、ef core、ids4、abp等官方组件。
PM> Install-Package Serilog.Extensions.Hosting -Version 3.0.0
PM> Install-Package Serilog.Sinks.File -Version 4.0.0
PM> Install-Package Serilog.Sinks.Elasticsearch -Version 6.5.0
PM> Install-Package Microsoft.Extensions.Caching.StackExchangeRedis -Version 3.1.0
PM> Install-Package Microsoft.AspNetCore.DataProtection.StackExchangeRedis -Version 3.1.0
PM> Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1.0
PM> Install-Package Volo.Abp.Account.Application -Version 2.0.1
PM> Install-Package Volo.Abp.Account.Web.IdentityServer -Version 2.0.1
PM> Install-Package Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic -Version 2.0.1
PM> Install-Package Volo.Abp.AuditLogging.EntityFrameworkCore -Version 2.0.1
PM> Install-Package Volo.Abp.Autofac -Version 2.0.1
PM> Install-Package Volo.Abp.EntityFrameworkCore.SqlServer -Version 2.0.1
PM> Install-Package Volo.Abp.Identity.EntityFrameworkCore -Version 2.0.1
PM> Install-Package Volo.Abp.IdentityServer.EntityFrameworkCore -Version 2.0.1
PM> Install-Package Volo.Abp.PermissionManagement.EntityFrameworkCore -Version 2.0.1
PM> Install-Package Volo.Abp.SettingManagement.EntityFrameworkCore -Version 2.0.1
PM> Install-Package Volo.Abp.TenantManagement.EntityFrameworkCore -Version 2.0.1
四、添加DbContext
在项目中添加DbContext并配置ef core迁移模型。
4.1 添加AuthServerDbContext
在EntityFrameworkCore目录下添加AuthServerDbContext.cs配置所有ABP模型,代码如下:
public class AuthServerDbContext : AbpDbContext
{
public AuthServerDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ConfigureIdentity();
modelBuilder.ConfigureIdentityServer();
modelBuilder.ConfigureAuditLogging();
modelBuilder.ConfigurePermissionManagement();
modelBuilder.ConfigureSettingManagement();
modelBuilder.ConfigureTenantManagement();
}
}
4.2 添加AuthServerDbContextFactory
在EntityFrameworkCore目录下创建AuthServerDbContextFactory.cs用于code first数据库迁移
public class AuthServerDbContextFactory : IDesignTimeDbContextFactory
{
public AuthServerDbContext CreateDbContext(string[] args)
{
var configuration = BuildConfiguration();
var builder = new DbContextOptionsBuilder()
.UseSqlServer(configuration.GetConnectionString("Default"));
return new AuthServerDbContext(builder.Options);
}
private static IConfigurationRoot BuildConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false);
return builder.Build();
}
}
五、配置Module
5.1 添加AuthServerHostModule
在AuthServer.Host根目录中添加AuthServerHostModule.cs
5.2 引用依赖
在AuthServerHostModule依次引用以下依赖
AbpAutofacModule
AbpPermissionManagementEntityFrameworkCoreModule
AbpAuditLoggingEntityFrameworkCoreModule
AbpSettingManagementEntityFrameworkCoreModule
AbpIdentityEntityFrameworkCoreModule
AbpIdentityServerEntityFrameworkCoreModule
AbpTenantManagementEntityFrameworkCoreModule
AbpEntityFrameworkCoreSqlServerModule
AbpAccountWebIdentityServerModule
AbpAccountApplicationModule
AbpAspNetCoreMvcUiBasicThemeModule
5.3 注册服务与初始化应用
AuthServer中不需要注册认证方式和Swagger服务,服务注册和初始化应用代码如下:
public class AuthServerHostModule : AbpModule
{
private const string DefaultCorsPolicyName = "Default";
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
context.Services.AddAbpDbContext(options =>
{
options.AddDefaultRepositories();
});
Configure(options =>
{
options.UseSqlServer();
});
Configure(options =>
{
options.Languages.Add(new LanguageInfo("en", "en", "English"));
});
context.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = configuration["Redis:Configuration"];
});
context.Services.AddCors(options =>
{
options.AddPolicy(DefaultCorsPolicyName,
builder =>
{
builder.WithOrigins(configuration["CorsOrigins"]
.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(o => o.RemovePostFix("/"))
.ToArray())
.WithAbpExposedHeaders()
.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
Configure(options =>
{
options.IsEnabledForGetRequests = true;
options.ApplicationName = "AuthServer";
});
var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);
context.Services.AddDataProtection()
.PersistKeysToStackExchangeRedis(redis, "DataProtection-Keys");
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
app.UseCorrelationId();
app.UseVirtualFiles();
app.UseRouting();
app.UseCors(DefaultCorsPolicyName);
app.UseAuthentication();
app.UseMultiTenancy();
app.UseIdentityServer();
app.UseAuthorization();
app.UseAbpRequestLocalization();
app.UseAuditing();
app.UseMvcWithDefaultRouteAndArea();
AsyncHelper.RunSync(async () =>
{
using (var scope = context.ServiceProvider.CreateScope())
{
await scope.ServiceProvider
.GetRequiredService()
.SeedAsync();
}
});
}
}
六、种子文件和配置文件
目前没有使用ids4身份管理界面,暂时使用种子文件将client信息添加到数据库。
详细代码可见Github
七、启动
7.1 迁移数据库
使用ef core迁移模型到数据库
PM> Add-Migration init
PM> Update-Database
7.2 运行
使用Ctrl+F5启动项目
启动成功后种子文件已经添加到数据库
7.3 登录
使用postman获取token
token成功返回
mysql主从配置duxi_[从0到1搭建ABP微服务] - 搭建授权服务相关推荐
- mysql主从配置duxi_手把手超详细Docker部署MongoDB集群
Mongodb集群搭建 mongodb 集群搭建的方式有三种:主从备份(Master - Slave)模式,或者叫主从复制模式. 副本集(Replica Set)模式. 分片(Sharding)模式. ...
- mysql主从配置duxi_配置MySQL主从复制(一主一从)
配置mysql主从复制(一主一从) MySQL版本:5.7,Linux版本:CentOS 7.4 MySQL主从复制简介 MySQL主从复制的目的是实现数据库冗余备份,将master数据库的数据定时同 ...
- mysql主从配置duxi_MySQL 8.0主从(Master-Slave)配置
MySQL 主从复制的方式有多种,本文主要演示基于基于日志(binlog)的主从复制方式. MySQL 主从复制(也称 A/B 复制) 的原理Master将数据改变记录到二进制日志(binary lo ...
- mysql主从配置duxi_WordPress大前端主题DUX 5.1
DUX是基于WordPress程序的大前端主题,由themebetter团队原创开发. 使用主题所需配置: PHP版本:5.3 ~ 7.2 wordpress版本:4.0+ Mysql版本:5.0+ ...
- mysql主从配置duxi_做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table...
浓缩版: 使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错. 如在Master(主)服务器上设置 replicate_do_db=test(my ...
- mysql主从配置流程
一.mysql主从配置原理 1.master将操作记录写到二进制日志中(binary log)中: 2.slave IO 线程将master的binary log events读写到它的中继日志(re ...
- Mysql主从配置,实现读写分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...
- mysql主从配置 简书_Mysql主从配置,实现读写分离-Go语言中文社区
转载:https://www.cnblogs.com/alvin_xp/p/4162249.html 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层 ...
- docker mysql.sock,Docker mysql主从配置
Docker mysql主从配置 一:Mysql基于Docker的主从复制搭建 1:安装docker,安装步骤可见我之前的文章:Docker-常用基建的安装与部署 docker ps 命令查询当前的容 ...
最新文章
- Android-正方形的容器
- python中matplotlib条形图数值大的在最底层显示_如何使用python的matplotlib模块绘制水平条形图...
- 【5分钟一本书】暗时间:用时间管理把握产品的进度条
- 简单分析STM32和51的区别
- Redis为什么默认16个数据库,干什么用?
- LeetCode33. 搜索旋转排序数组(二分查找)
- openlayer右键菜单_OpenLayers添加右键菜单
- *第八周*数据结构实践项目一【建设顺序串算法库】
- linux常用命令之文件操作
- 传感器实验——超声波避障小车
- 微型计算机中央处理器又称为,微处理器又称为什么
- SCI期刊图片分辨率与清晰度修改,以及拼图
- java 变量 英文_Java中的字符类型变量无论是中文,英文还是数字,都是占4字节。...
- 即日起,发放三种勋章公告。
- 第四平方和定理,用c语言实现
- 汽车加油问题贪心算法c语言,汽车加油问题之贪心算法(全面分析)
- 三网合一我们该做些什么?
- BB10 NDK Cascades 框架简介和QT使用教程(与Nokia Symbian QT的区别)
- 建立forumnuke 论坛.
- 示波器 - 相关术语介绍