.NET Core IdentityServer4实战 第六章-Consent授权页

  在identityServer4中登陆页面只要是成功了,就会注册一个Cookie在服务器资源上,像现在大部分的网站第三方授权,都是经过一个页面,然后选需要的功能,IdentityServer4也给我们提供了,只要你登陆成功,就会跳转到Consent/Index(Get)中,所以我们只要在其中做手脚就好了。

  在编写代码之前我们要知道IdentityServer的三个接口, IClientStore 是存放客户端信息的, IResourceStore 是存放资源API信息的,这两个接口都是在IdentityServer4的Stores的命名空间下,还有一个接口是 IIdentityServerInteractionService 用于与IdentityServer通信的服务,主要涉及用户交互。它可以从依赖注入系统获得,通常作为构造函数参数注入到IdentityServer的用户界面的MVC控制器中。

  下面我们创建一个Consent控制器在认证服务器上,名为 ConsentController ,在其中我们需要将这三个接口通过构造函数构造进来。

640?wx_fmt=png

在控制器中,因为登陆成功是从Account控制器调过来的,那个时候还带着ReturnUrl这个而参数,我们在这个控制器中也需要ReturnUrl,所以在Get方法中写上该参数,要不然跳转不过来的。

其中调用了 BuildConsentViewModel 方法用于返回一个consent对象,其中我们使用 _identityServerInteractionService 接口获取了上下文,然后再通过其余的两个接口找到它客户端还有资源api的信息。然后再调用了自定义的 CreateConsentViewModel 对象创建了consent对象。

640?wx_fmt=png

以上我们的控制器就完成了,现在我们搞一下视图,在视图中我们就是简单做一下,使用ConsentVm作为视图绑定对象,在之中我遇到了一个Bug,我用 @Html.Partial("_ScopeListItem", item); 的时候突然就报错了,在页面上显示一个Task一大堆的错误信息,我也不知道啥情况(望大佬解决),换成不是异步的就行了。

640?wx_fmt=png

640?wx_fmt=png

下面是局部视图的定义,传过来的对象是 ResourceScopes 和 IdentityScopes ,但他们都是对应ScopeVm,在其中呢就是把他们哪些权限列出来,然后勾选,在它的父页面已经做了post提交,所以我们还得弄个控制器。

640?wx_fmt=png

 这个方法的参数是我们所自定义的实体,其中有按钮还有返回的地址,在其中我们判断了是否选择OK,选择不那就直接赋一个拒绝的指令,如果ok那么就直接判断是否有这个权力,因为我们在config中进行了配置,然后如果有,呢么就直接添加,在不==null的清空下,我们根据 returlUrl 这个字符串获取了请求信息,然后通过 GrantConsentAsync 方法直接同意了授权,然后直接跳转过去,就成功了。

640?wx_fmt=png

最后,在调试的时候一定要Client的 RequireConsent 设置为true. 

640?wx_fmt=png

原文地址:https://www.cnblogs.com/ZaraNet/p/11146224.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

640?wx_fmt=jpeg

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

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

相关文章

GitHub的CI实践(xUnit / OpenCover /Appveyor / Coveralls.net)

最近利用业余时间实现.ner core 版本的 casbin ,即 Casbin.NET。之前的CI都使用的是公司搭建的jenkins和gitlab-runner,对开源社区的工具链并不是很熟悉,在casbin的原作者(hsluoyz )的“要求”下,只能被迫在项目的README.md加入下…

P4847 银河英雄传说V2 非旋treap

传送门 文章目录题意:思路:题意: 思路: 让我们分析一下题目需要实现什么操作: (1)(1)(1)将某个序列放到某个的后面,也就是合并两个序列。 (2)(2)(2)将一个序列从某处断开。 (3)(3)(3)查询某个序列的一段和…

小白开学Asp.Net Core 《五》

小白开学Asp.Net Core《五》—— 使用.Net Core MVC Filter一、简介今天在项目(https://github.com/AjuPrince/Aju.Carefree)做登陆权限时,用到了Filter,现将Filer的使用做以下记录。二、Filter 简介Filter俗称过滤器,…

P5217 贫穷 平衡树

传送门 文章目录题意:思路:题意: 思路: 本来是不想写数据结构了,因为明天打蓝桥了,想放松一下,但是看到这个题感觉写起来挺简单的,就试了试,结果… 首先看一下他的操作…

高性能微服务网关.NETCore客户端Kong.Net开源发布

前言项目地址:https://github.com/lianggx/Kong.Net你的支持使我们更加强大,请单击 star 让更多的 .NETCore 认识它。拥抱开源的脚步,我们从来都是一直在路上;.NETCore作为后起之秀,带给我们太多的惊喜和感动&#xff…

使用Jenkins部署.Net Core遇到的几个坑

一、相关环境和版本搞过CI/CD的同学一定吃过不少苦头,或者说遇到不少坑,但是对自动化的执着住挡不了前进的步伐,如果你缺少了运维这一块知识,那么你的流水线总是不那么完美,本文记录的是自己躺过的坑,希望对…

Deltix Round, Spring 2021 E. Crypto Lights 组合数学 + 推公式

传送门 文章目录题意:思路:题意: 给你nnn个灯,每次可以打开一个灯,当连续的kkk个灯有至少两个灯开着的时候停止,问最终期望能打开多少灯。 思路: 由于不想打latexlatexlatex,所以…

.NET Core 仿魔兽世界密保卡实现

《魔兽世界》的老玩家都知道,密保卡曾经被用于登录验证,以保证账号安全。今天我用.NET Core模拟了一把密保卡(也叫矩阵卡)的实现,分享给大家。密保卡的原理这是一张典型的魔兽世界密保卡。序列号用于绑定游戏账号&…

浅谈C#泛型

一.为什么要提出泛型的概念我们在声明对象或者方法中,对象中成员变量的定义或者函数参数都传递都要指定具体的对象类型,但是有的时候参数的类型是变化的,但是实现的功能却又差不多,这个时候我们就想,是否存在一种东西可…

【半小时大话.net依赖注入】(一)理论基础+实战控制台程序实现AutoFac注入

第一章|理论基础实战控制台程序实现AutoFac注入第二章|AutoFac的常见使用套路第三章|实战Asp.Net Framework Web程序实现AutoFac注入第四章|实战Asp.Net Core自带DI实现依赖注入第五章|实战Asp.Net Core引入AutoFac的两种方式简介该系列共5篇文章,旨在以实战模式&am…

P4198 楼房重建 线段树 + 区间合并

传送门 文章目录题意:思路:题意: 题面有点问题,按照人类正常的理解来就好啦。 思路: 可以想到维护每个位置的一个斜率,模拟的话就是从第一个位置开始向后选,当某个位置斜率大于当前位置的时…

基于 Docker Compose 实践 .NET Core 的现代化架构 2:在容器中集成 Skywalking APM

本章节代码已经上传至 https://github.com/siegrainwong/.NET-Core-with-Docker/tree/master/Part2系列大纲还是先介绍一下目录,这次我们讲第二篇:用 docker-compose 启动 WebApi 和 SQL Server在容器中集成 Skywalking APM通过 nginx-proxy 对 ES、Skyw…

使用Minikube部署本地Kubernetes集群(二十九)

前言 使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题。在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建。如果搭建过程中出现错误,建议使用mini…

Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) F. Bits And Pieces sosdp预处理超集

传送门 文章目录题意:思路:题意: n≤1e6,ai≤2e6n\le1e6,a_i\le2e6n≤1e6,ai​≤2e6 思路: 由于(aj&ak)(a_j \And a_k)(aj​&ak​)打的括号,所以应该放在一起考虑,现在我们可以枚举aia_iai​&…

架构杂谈《一》

架构杂谈《一》从传统单体架构到服务化架构的发展历程典型的单体架构分为三个层级,Web层、业务逻辑层和数据存储层,每个层的指责分别如下:Web 层:负责与用户交互或者对外提供接口业务逻辑层:为了实现业务逻辑而设计的流…

hdu 3308 LCIS 线段树 + 区间合并

传送门 文章目录题意:思路:题意: 思路: 日常水一篇题解。 带修改的求区间连续的递增序列,我们考虑用线段树维护。 直接维护mlenmlenmlen是区间最长的递增序列,lslsls是从左端点开始的最长递增序列&#xf…

从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

标题:从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板作者:Lamond Lu地址:https://www.cnblogs.com/lwqlun/p/11155666.html源代码:https://github.com/lamondlu/DynamicPlugins在上一篇中,我们介绍…

Codeforces Round #112 (Div. 2) E. Compatible Numbers sosdp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 以下假设all1<<22all1<<22all1<<22。 转化问题&#xff0c;对于每个aia_iai​我们都计算xaixorallxa_i\ \ xor \ \ allxai​ xor all&#xff0c;对于所有xxx的子集都…

多租户通用权限设计(基于 casbin)

所谓权限控制, 概念并不复杂, 就是确认某个操作是否能做, 本质上仅仅就是个bool判断.权限几乎是每个系统必不可少的功能, 和具体业务结合之后, 在系统中往往表现的非常复杂和难于控制, 很大部分原因是把权限和具体业务结合的太过紧密, 把业务的复杂度也加入到权限控制中来了.一…

容器化单页面应用中RESTful API的访问

最近在工作中&#xff0c;需要让运行在容器中的单页面应用程序能够访问外部的RESTful API。这个需求看起来并不困难&#xff0c;不过实现起来还是有些曲折的。在此&#xff0c;我就将这部分内容总结一下。在入正题之前&#xff0c;有个一问题&#xff0c;就是为什么要将单页面应…