Angular11 MSAL B2C登录实例 (一)

前言

因为项目需求,需要把Angular 11项目中登录方式改成B2C登录,所以在参考了一系列文档后,成功通过MSAL将项目的登录方式改成B2C登录。下面介绍了详细步骤及一些注意事项。

步骤:

1. 安装MSAL

在项目中安装msal
npm i @azure/msal-angular --save
npm i @azure/msal-browser --save
通过查阅MSAL的文档,发现v2以上版本才支持Angualr11,所以在本项目的代码中使用的是:
"@azure/msal-angular": "^2.0.3",
"@azure/msal-browser": "^2.17.0",

2. 引入MSAL

在项目中引入MSAL主要是在两个文件中引入,app.module.ts和app-routing.module.ts中引入,下面先讲解app.module.ts这个文件。

app.module.ts

...
import { IPublicClientApplication, PublicClientApplication, InteractionType, BrowserCacheLocation, LogLevel } from '@azure/msal-browser';
import { MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalRedirectComponent } from '@azure/msal-angular';export function loggerCallback(logLevel: LogLevel, message: string) {
}export function MSALInstanceFactory(): IPublicClientApplication {return new PublicClientApplication({auth: {clientId: "your-client-id",authority: "your-authority",knownAuthorities: "your-knownAuthorities", redirectUri: "your-redirectUri", postLogoutRedirectUri: "your-LogoutRedirectUri:"}cache: {cacheLocation: BrowserCacheLocation.SessionStorage,storeAuthStateInCookie: false, },system: {loggerOptions: {loggerCallback,logLevel: LogLevel.Info,piiLoggingEnabled: false}}});
}export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {const protectedResourceMap = new Map<string, Array<string>>();protectedResourceMap.set("your-local-set", [yourB2CScope]);return {interactionType: InteractionType.Redirect,protectedResourceMap};
}@NgModule({declarations: [...],imports: [...MsalModule],providers: [...{provide: HTTP_INTERCEPTORS,useClass: MsalInterceptor,multi: true},{provide: MSAL_INSTANCE,useFactory: MSALInstanceFactory},{provide: MSAL_INTERCEPTOR_CONFIG,useFactory: MSALInterceptorConfigFactory},MsalService,MsalBroadcastService],bootstrap: [AppComponent, MsalRedirectComponent]
})
}

注意: 在以上实例中,your开头的,都是需要自己配置的信息。 省略号代表着你自己项目中的其他代码。

#app-routing.module.ts会在下篇文章讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/165680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BUUCTF [WUSTCTF2020]find_me 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。 感谢 Iven Huang 师傅供题。 比赛平台&#xff1a;https://ctfgame.w-ais.cn/ 密文&#xff1a; 下载附件&#xff0c;得到一个.jpg图片。 解题思路&#xff1a; 1、得到一张图…

vue中页面(路由)跳转及传值的几种方式 router-link + query + params

vue中页面(路由)跳转及传值的几种方式 知道query 和 params 是什么 参考文案:https://www.php.cn/js-tutorial-382859.html 跳转的几种方式与传值 1、router-link 1.1 根据路由路径(无参数与有参数) <router-link to = "/page">跳转到page页面</…

Java WebSocket 客户端接收大量数据

介绍 WebSocket 是一种基于 TCP 协议的全双工通信协议&#xff0c;它能够在客户端和服务器之间建立一个持久连接&#xff0c;实现实时的双向数据传输。在实际应用中&#xff0c;有时候我们需要处理大量的数据&#xff0c;例如实时监控系统或者实时股票行情等。本文将介绍如何使…

Matlab三角剖分插值问题分析

目录 前言 一、问题引入 二、一个例子 1.生成散点图 2.对数据进行剖分 3.点法式分析 三、最后结果 前言 上一篇文章感觉对三角剖分问题没有说清楚&#xff0c;这次专门对三角剖分问题再仔细说说。 一、问题引入 实际上这个问题是用来解决二维曲面插值问题的。 二维插值问题&…

外部中断为什么会误触发?

今天在写外部中断的程序的时候&#xff0c;发现中断特别容易受到干扰&#xff0c;我把手放在对应的中断引脚上&#xff0c;中断就一直触发&#xff0c;没有停过。经过一天的学习&#xff0c;找到了几个解决方法&#xff0c;所以写了这篇笔记。如果你的中断也时不时会误触发&…

数 组

数组格式 普通数组下标是数字 关联数组下标是字符串 例子&#xff1a; a&#xff08;10 20 30 40 50&#xff09; a[0] 10 数组的分类(普通数组和关联数组) 普通数组 可以不需要手动声明&#xff0c;直接使用 declare -a 数组名 关联数组 一定要手动声明 adeclare …

通过Spring整合MyBatis实现持久层操作

文章目录 为什么要整合Spring和MyBatis&#xff1f;步骤一&#xff1a;添加依赖步骤二&#xff1a;配置数据源步骤三&#xff1a;配置MyBatis步骤四&#xff1a;创建Mapper接口和XML文件步骤五&#xff1a;使用Mapper接口拓展&#xff1a;事务管理 &#x1f389;通过Spring整合…

Leetcode173. 二叉搜索树迭代器

Every day a Leetcode 题目来源&#xff1a;173. 二叉搜索树迭代器 解法1&#xff1a;中序遍历 我们可以直接对二叉搜索树做一次完全的递归遍历&#xff0c;获取中序遍历的全部结果并保存在数组中。随后&#xff0c;我们利用得到的数组本身来实现迭代器。 代码&#xff1a…

竞赛 : 题目:基于深度学习的水果识别 设计 开题 技术

1 前言 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/pos…

Spark-06:共享变量

目录 1.广播变量&#xff08;broadcast variables&#xff09; 2.累加器&#xff08;accumulators&#xff09; 在分布式计算中&#xff0c;当在集群的多个节点上并行运行函数时&#xff0c;默认情况下&#xff0c;每个任务都会获得函数中使用到的变量的一个副本。如果变量很…

开启数据库审计(db,extended级别或os级别),并将审计文件存放到/home/oracle/audit下

文章目录 开启数据库审计&#xff08;db,extended级别或os级别&#xff09;&#xff0c;并将审计文件存放到/home/oracle/audit下一. 简介二. 配置2.1. 审计是否安装2.2. 审计表空间迁移2.3. 审计参数2.4. 审计级别2.5. 其他审计选项2.6. 审计相关视图 三. 使用3.1. 开启/关闭审…

成为独立开发者有多难

首先自我介绍&#xff1a;我是一名前端开发工程师&#xff0c;7年的前端开发经验。CSDN 九段刀客_js,vue,ReactNative-CSDN博客,80多万的访问量&#xff0c;1万多的粉丝。 相信80%的程序员的终极梦想都是成为一名独立开发者&#xff0c;不用找工作有自己的产品可以有睡后收入。…

深度学习模型训练计算量的估算

深度学习模型训练计算量的估算 方法1&#xff1a;基于网络架构和批处理数量计算算术运算次数前向传递计算和常见层的参数数量全连接层&#xff08;Fully connected layer&#xff09;参数浮点数计算量 CNN参数浮点数计算量 转置CNN参数浮点数计算量 RNN参数浮点数计算量 GRU参数…

刷题学习记录(含2023ISCTFweb题的部分知识点)

[SWPUCTF 2021 新生赛]sql 进入环境 查看源码&#xff0c;发现是get传参且参数为wllm fuzz测试&#xff0c;发现空格&#xff0c;&#xff0c;and被过滤了 同样的也可以用python脚本进行fuzz测试 import requests fuzz{length ,,handler,like,select,sleep,database,delete,h…

java学习part09类的构造器

1. 2.默认构造器 如果没有显式定义任何构造器&#xff0c;系统会默认加一个默认构造器。 如果定义了&#xff0c;则不会有默认构造器。 默认构造器的权限和类的权限一样&#xff0c;类是public构造器就是public&#xff0c;类是缺省默认构造器就是缺省 反编译之后添加的构造…

解决DaemonSet没法调度到master节点的问题

最近在kubernetes部署一个springcloud微服务项目&#xff0c;到了最后一步部署边缘路由&#xff1a;使用nginx-ingress和traefik都可以&#xff0c;必须使用DaemonSet部署&#xff0c;但是发现三个节点&#xff0c;却总共只有两个pod。 换句话说&#xff0c; DaemonSet没法调度…

UML建模图文详解教程05——包图

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;《UML面向对象分析、建模与设计&#xff08;第2版&#xff09;》吕云翔&#xff0c;赵天宇 著 包图概述 包图(package diagram)是用来描述模型中的…

一个最简单的工业通讯数据分析例子

1.背景 对工业设备的通讯协议进行分析可以帮助我们更好地理解其工作原理和相关技术&#xff0c;并且有助于以下几个方面&#xff1a; 1. 优化工业设备的通讯效率&#xff1a;了解通讯协议的细节可以帮助我们找到通讯效率低下的原因并进行优化&#xff0c;提高设备的通讯效率和…

Axioss笔记

一、Get请求 // 请求头携带参数&#xff0c;案例&#xff1a;?uid1001 axios.get(http://localhost:8080/user/api/v1/user/query, {params: {uid: 1001}}).then(res > {console.log(res.data) }).catch(err > {console.log("请求错误" err) }).finally(() …

MySQL 8 配置文件详解与最佳实践

MySQL 8 是一款强大的关系型数据库管理系统&#xff0c;通过适当的配置文件设置&#xff0c;可以充分发挥其性能潜力。在这篇博客中&#xff0c;我们将深入探究 MySQL 8 常用的配置文件&#xff0c;并提供一些建议&#xff0c;帮助您优化数据库性能。 配置文件概览 在 MySQL …