当前位置: 首页 > news >正文

农村网站做移动推广普通话心得体会

农村网站做移动,推广普通话心得体会,长沙网站建设哪个好,网站自己做流量目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasmBlazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端…目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasmBlazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端管理组件Blazor SSR/WASM IDS/OIDC 单点登录授权实例4 - 部署服务端/独立WASM端授权Blazor SSR/WASM IDS/OIDC 单点登录授权实例5 - Blazor hybird app 端授权Blazor SSR/WASM IDS/OIDC 单点登录授权实例5 - Winform 端授权 源码 BlazorOIDC/Server 1. 建立 BlazorOIDC 工程 新建wasm工程 BlazorOIDC 框架: 7.0身份验证类型: 个人账户ASP.NET Core 托管 2. 添加自定义身份实体类,扩展IDS字段 BlazorOIDC.Server项目 编辑 Models/WebAppIdentityUser.cs 文件 using Microsoft.AspNetCore.Identity; using System.ComponentModel.DataAnnotations;namespace BlazorOIDC.Server.Models;public class ApplicationUser : IdentityUser { /// summary/// Full name/// /summary[Display(Name 全名)][PersonalData]public string? Name { get; set; }/// summary/// Birth Date/// /summary[Display(Name 生日)][PersonalData]public DateTime? DOB { get; set; }[Display(Name 识别码)]public string? UUID { get; set; }[Display(Name 外联)]public string? provider { get; set; }[Display(Name 税号)][PersonalData]public string? TaxNumber { get; set; }[Display(Name 街道地址)][PersonalData]public string? Street { get; set; }[Display(Name 邮编)][PersonalData]public string? Zip { get; set; }[Display(Name 县)][PersonalData]public string? County { get; set; }[Display(Name 城市)][PersonalData]public string? City { get; set; }[Display(Name 省份)][PersonalData]public string? Province { get; set; }[Display(Name 国家)][PersonalData]public string? Country { get; set; }[Display(Name 类型)][PersonalData]public string? UserRole { get; set; } } 3. 添加自定义声明 BlazorOIDC.Server项目 新建 Data/ApplicationUserClaimsPrincipalFactory.cs 文件 using BlazorOIDC.Server.Models; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Options; using System.Security.Claims;namespace Densen.Models.ids;public class ApplicationUserClaimsPrincipalFactory : UserClaimsPrincipalFactoryApplicationUser, IdentityRole {public ApplicationUserClaimsPrincipalFactory(UserManagerApplicationUser userManager, RoleManagerIdentityRole role,IOptionsIdentityOptions optionsAccessor) : base(userManager, role, optionsAccessor){}protected override async TaskClaimsIdentity GenerateClaimsAsync(ApplicationUser user){ClaimsIdentity claims await base.GenerateClaimsAsync(user);var roles await UserManager.GetRolesAsync(user);foreach (var role in roles){claims.AddClaim(new Claim(roleVIP, role));}return claims;}}4. 配置文件 BlazorOIDC.Server项目 引用 Microsoft.EntityFrameworkCore.Sqlite 包, 示例使用sqlite数据库演示 引用第三方登录包 Microsoft.AspNetCore.Authentication.Facebook Microsoft.AspNetCore.Authentication.Google Microsoft.AspNetCore.Authentication.MicrosoftAccount Microsoft.AspNetCore.Authentication.Twitter AspNet.Security.OAuth.GitHub编辑配置文件 appsettings.json, 添加连接字符串和第三方登录ClientId/ClientSecret等配置 {ConnectionStrings: {DefaultConnection: Server(localdb)\\mssqllocaldb;Databaseaspnet-BlazorOIDC.Server-e292861d-0c29-45ea-84b1-b4558d5aa35d;Trusted_ConnectionTrue;MultipleActiveResultSetstrue,IdsSQliteConnection: Data Source../ids_api.db;},Logging: {LogLevel: {Default: Information,Microsoft.AspNetCore: Warning}},IdentityServer: {Clients: {BlazorOIDC.Client: {Profile: IdentityServerSPA}}},AllowedHosts: *,Authentication: {Google: {Instance: https://accounts.google.com/o/oauth2/v2/auth,ClientId: ClientId,ClientSecret: ClientSecret,CallbackPath: /signin-google},Facebook: {AppId: AppId,AppSecret: AppSecret},Microsoft: {ClientId: ClientId,ClientSecret: ClientSecret},Twitter: {ConsumerAPIKey: ConsumerAPIKey,ConsumerSecret: ConsumerSecret},Github: {ClientID: ClientID,ClientSecret: ClientSecret},WeChat: {AppId: AppId,AppSecret: AppSecret},QQ: {AppId: AppId,AppKey: AppKey}} }5. 配置IDS身份验证服务 BlazorOIDC.Server项目 编辑 Program.cs 文件 using BlazorOIDC.Server.Data; using BlazorOIDC.Server.Models; using Densen.Identity.Areas.Identity; using Densen.Models.ids; using Duende.IdentityServer; using Microsoft.AspNetCore.ApiAuthorization.IdentityServer; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.IdentityModel.Tokens;var builder WebApplication.CreateBuilder(args);// Add services to the container. //var connectionString builder.Configuration.GetConnectionString(DefaultConnection) ?? throw new InvalidOperationException(Connection string DefaultConnection not found.); //builder.Services.AddDbContextApplicationDbContext(options // options.UseSqlServer(connectionString));//EF Sqlite 配置 builder.Services.AddDbContextApplicationDbContext(o o.UseSqlite(builder.Configuration.GetConnectionString(IdsSQliteConnection)));builder.Services.AddDatabaseDeveloperPageExceptionFilter();//附加自定义用户声明到用户主体 builder.Services.AddScopedApplicationUserClaimsPrincipalFactory();builder.Services.AddDefaultIdentityApplicationUser(o { // Password settings.o.Password.RequireDigit false;o.Password.RequireLowercase false;o.Password.RequireNonAlphanumeric false;o.Password.RequireUppercase false;o.Password.RequiredLength 1;o.Password.RequiredUniqueChars 1; }).AddRolesIdentityRole().AddEntityFrameworkStoresApplicationDbContext().AddClaimsPrincipalFactoryApplicationUserClaimsPrincipalFactory();builder.Services.AddIdentityServer(options {options.LicenseKey builder.Configuration[IdentityServerLicenseKey];options.Events.RaiseErrorEvents true;options.Events.RaiseInformationEvents true;options.Events.RaiseFailureEvents true;options.Events.RaiseSuccessEvents true; }).AddApiAuthorizationApplicationUser, ApplicationDbContext(options {options.IdentityResources[openid].UserClaims.Add(roleVIP);// Client localhostvar url2 localhost;var spaClient2 ClientBuilder.SPA(BlazorWasmIdentity.Localhost).WithRedirectUri($https://{url2}:5001/authentication/login-callback).WithLogoutRedirectUri($https://{url2}:5001/authentication/logout-callback).WithScopes(openid Profile).Build();spaClient2.AllowOfflineAccess true;spaClient2.AllowedCorsOrigins new[]{$https://{url2}:5001};options.Clients.Add(spaClient2);//2024-1-23 更新测试端点配置项var spaClientBlazor5002 ClientBuilder.SPA(Blazor5002).WithScopes(api).Build();spaClientBlazor5002.AllowedCorsOrigins new[]{$http://0.0.0.0,$http://0.0.0.0:5001,$http://0.0.0.0:5002,$http://localhost,$http://localhost:5001,$http://localhost:5002,$https://localhost,$https://localhost:5001,$https://localhost:5002};foreach (var item in spaClientBlazor5002.AllowedCorsOrigins){spaClientBlazor5002.RedirectUris.Add(${item}/authentication/login-callback);spaClientBlazor5002.PostLogoutRedirectUris.Add(${item}/authentication/logout-callback);}spaClientBlazor5002.AllowOfflineAccess true;options.Clients.Add(spaClientBlazor5002);});builder.Services.AddAuthentication();var autbuilder new AuthenticationBuilder(builder.Services); autbuilder.AddGoogle(o {o.ClientId builder.Configuration[Authentication:Google:ClientId] ?? ;o.ClientSecret builder.Configuration[Authentication:Google:ClientSecret] ?? ;o.ClaimActions.MapJsonKey(urn:google:profile, link);o.ClaimActions.MapJsonKey(urn:google:image, picture); }); //autbuilder.AddFacebook(o //{ // o.AppId builder.Configuration[Authentication:Facebook:AppId] ?? ; // o.AppSecret builder.Configuration[Authentication:Facebook:AppSecret] ?? ; //}); //autbuilder.AddTwitter(o //{ // o.ConsumerKey builder.Configuration[Authentication:Twitter:ConsumerAPIKey] ?? ; // o.ConsumerSecret builder.Configuration[Authentication:Twitter:ConsumerSecret] ?? ; // o.RetrieveUserDetails true; //}); autbuilder.AddGitHub(o {o.ClientId builder.Configuration[Authentication:Github:ClientID] ?? ;o.ClientSecret builder.Configuration[Authentication:Github:ClientSecret] ?? ; }); //autbuilder.AddMicrosoftAccount(o //{ // o.ClientId builder.Configuration[Authentication:Microsoft:ClientId] ?? ; // o.ClientSecret builder.Configuration[Authentication:Microsoft:ClientSecret] ?? ; //}); //if (WeChat) autbuilder.AddWeChat(o //{ // o.AppId Configuration[Authentication:WeChat:AppId]; // o.AppSecret Configuration[Authentication:WeChat:AppSecret]; // o.UseCachedStateDataFormat true; //}) //autbuilder.AddQQ(o //{ // o.AppId builder.Configuration[Authentication:QQ:AppId] ?? ; // o.AppKey builder.Configuration[Authentication:QQ:AppKey] ?? ; //}); autbuilder.AddOpenIdConnect(oidc, Demo IdentityServer, options {options.SignInScheme IdentityServerConstants.ExternalCookieAuthenticationScheme;options.SignOutScheme IdentityServerConstants.SignoutScheme;options.SaveTokens true;options.Authority https://demo.duendesoftware.com;options.ClientId interactive.confidential;options.ClientSecret secret;options.ResponseType code;options.TokenValidationParameters new TokenValidationParameters{NameClaimType name,RoleClaimType role}; });builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddScopedAuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProviderApplicationUser();var app builder.Build();// Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) {app.UseMigrationsEndPoint();app.UseWebAssemblyDebugging(); } else {app.UseExceptionHandler(/Error);// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.app.UseHsts(); }app.UseHttpsRedirection();app.UseBlazorFrameworkFiles(); app.UseStaticFiles();app.UseRouting(); app.UseCors(o o.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());app.UseIdentityServer(); app.UseAuthorization();app.MapBlazorHub(); app.MapRazorPages(); app.MapControllers(); app.MapFallbackToFile(index.html);app.Run();6. 运行工程 因为篇幅的关系,具体数据库改为sqlite生成脚本步骤参考以前文章或者直接拉源码测试 点击注册按钮用户名 testtest.com密码 1qaz2wsx 点击 Apply Migrations 按钮 刷新页面 已经可以成功登录
http://www.zqtcl.cn/news/412609/

相关文章:

  • 企业网站销售提升学历要多少钱
  • 打开建设银行官方网站首页wordpress 站库分离
  • 电子商务网站建设的试卷设计之家app
  • 抚养网站建设黔东南小程序开发公司
  • 网站建设相关行业有哪些wordpress 内容管理系统
  • 网站 备案地温州网站优化排名推广
  • 做网站的工作量国内 wordpress
  • 定制网站开发是什么大业推广网站
  • 网站建设每年需要交多少钱天津制作网站公司
  • 网站平台都有哪些wordpress 主题制作 视频
  • 中山网站建设方案家具网站开发目的
  • 教师个人网站建设建模培训多少钱
  • 个人网站可以做社交类型网站建设功能说明书
  • 微站是什么移动网站 拉新
  • 黑龙江省农业网站建设情况wordpress4.94主题上传不显示
  • 个人网站的域名重庆建立公司网站
  • 什么做网站做个多少钱啊百度网盘app
  • 做网站的公司挣钱吗石家庄房产
  • 烟台网站建设设计公司安徽建设工程信息网查询平台蔡庆树
  • 微信链接的微网站怎么做西安企业网站制作价格
  • uniapp怎么做淘客网站表格布局的网站
  • wordpress侧栏图片插件提升seo搜索排名
  • 如何查询网站的域名注册邹城建设银行网站
  • 招生门户网站建设方案国家企业信用信息公示信息查询网
  • 用dw做淘客网站的步骤移动互联网应用技术
  • 企业合作的响应式网站石家庄网站建设推广
  • 成都网站排名优化开发广告传媒公司简介模板
  • 中山网站建设企业网站内容建设
  • 免费网站建站页面wordpress的主题在哪个文件夹
  • 国企网站建设要求站长之家排行榜