Blazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端管理组件

本文主要是介绍Blazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端管理组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录:

  1. OpenID 与 OAuth2 基础知识
  2. Blazor wasm Google 登录
  3. Blazor wasm Gitee 码云登录
  4. Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务
  5. Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasm
  6. Blazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端管理组件
  7. Blazor SSR/WASM IDS/OIDC 单点登录授权实例4 - 部署服务端/独立WASM端授权
  8. Blazor SSR/WASM IDS/OIDC 单点登录授权实例5 - Blazor hybird app 端授权
  9. Blazor SSR/WASM IDS/OIDC 单点登录授权实例5 - Winform 端授权

源码

BlazorOIDC/Server

BlazorOIDC.Server 项目

1. 服务端默认工程改为 Blazor ssr

  • 最新版vs模板建立的net7 blazor wasm 托管工程主机端是空工程,需要改造一下变为服务端

具体代码比较多, 直接看提交或者源码

  • 添加Pages目录以及文件
  • 添加Shared目录以及文件
  • 添加_Imports.razor文件
  • 添加App.razor文件

2. 添加简单管理页面

Pages/DataAdmin.razor

<h4>用户表</h4><TablePollo TItem="AspNetUsers"IncludeByPropertyNames="@IncludeAspNetUsers"ItemDetails="AspNetUserRoles"SubAddAsync="OnSubAddAsync"ItemDetailsII="NullClass"ItemDetailsIII="NullClass"ShowColumnListShowExportButtonShowDetailRowSField="@nameof(AspNetUsers.Id)"FieldD="@nameof(AspNetUserRoles.UserId)"ExportToStream="false"ExportBasePath="temp" />

用户身份以及角色分配刷新两次后自动分配到测试数据

3. 用户身份以及角色分配

登录 test@test.com 后点击登录信息, 可以看到用户身份以及角色分配已经能读取出来了

点击Wasm菜单,切换到wasm项目,在wasm项目也重新登录,点击登录信息,可以看到用户身份以及角色分配也已经更新了

4. API授权

添加 Controllers/UserController.cs

using BlazorOIDC.Server.Models;
using Densen.Identity;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;namespace BlazorOIDC.Server.Controllers;[ApiController]
[Route("[controller]")]
public class UserController : ControllerBase
{private readonly ILogger<UserController> _logger;private readonly UserManager<ApplicationUser> _userManager;private readonly SignInManager<ApplicationUser> _signInManager;public UserController(ILogger<UserController> logger, SignInManager<ApplicationUser> signInManager,UserManager<ApplicationUser> userManager){_logger = logger;_signInManager = signInManager;_userManager = userManager;}/// <summary>/// jwt登录测试/// </summary>/// <param name="username"></param>/// <param name="password"></param>/// <param name="code"></param>/// <returns></returns>[HttpPost]public async Task<IActionResult> Post(string username = "test@test.com", string password = "1qaz2wsx"){var signedUser = await _userManager.FindByEmailAsync(username);if (signedUser == null){_logger.LogWarning("登录失败.");ModelState.AddModelError(string.Empty, "登录失败.请检查用户名或者密码.");return BadRequest("用户名密码错误");}var result = await _signInManager.PasswordSignInAsync(signedUser, password, false, lockoutOnFailure: false);var userId = await _userManager.GetUserIdAsync(signedUser);return Ok(new { result });}[Authorize][HttpGet]public async Task<object> Get(){//获取用户Claim信息var userClaims = HttpContext.User.Claims.Select(it => $"{it.Type}:{it.Value}");var user = await _userManager.GetUserAsync(User);return new{user.UserName,roles = await _userManager.GetRolesAsync(user),userClaims};}[Authorize(Roles = nameof(AuthorizeRoles.Superuser))][HttpGet("{id}")]public async Task<object> Get(int id){var user = await _userManager.GetUserAsync(User);return new{user.UserName,roles = await _userManager.GetRolesAsync(user)};} }

为了配合下一章OIDC部署到服务器使用,需要把 launchSettings.json 配置改一下

"applicationUrl": "https://localhost:5001;http://localhost:5000",

5. 测试API授权

测试登录

测试用户验证

这篇关于Blazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端管理组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/700075

相关文章

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结