.NET Core IdentityServer4实战 第六章-Consent授权页
在identityServer4中登陸頁面只要是成功了,就會注冊一個Cookie在服務(wù)器資源上,像現(xiàn)在大部分的網(wǎng)站第三方授權(quán),都是經(jīng)過一個頁面,然后選需要的功能,IdentityServer4也給我們提供了,只要你登陸成功,就會跳轉(zhuǎn)到Consent/Index(Get)中,所以我們只要在其中做手腳就好了。
在編寫代碼之前我們要知道IdentityServer的三個接口,?IClientStore?是存放客戶端信息的,?IResourceStore?是存放資源API信息的,這兩個接口都是在IdentityServer4的Stores的命名空間下,還有一個接口是?IIdentityServerInteractionService?用于與IdentityServer通信的服務(wù),主要涉及用戶交互。它可以從依賴注入系統(tǒng)獲得,通常作為構(gòu)造函數(shù)參數(shù)注入到IdentityServer的用戶界面的MVC控制器中。
下面我們創(chuàng)建一個Consent控制器在認(rèn)證服務(wù)器上,名為?ConsentController?,在其中我們需要將這三個接口通過構(gòu)造函數(shù)構(gòu)造進(jìn)來。
在控制器中,因為登陸成功是從Account控制器調(diào)過來的,那個時候還帶著ReturnUrl這個而參數(shù),我們在這個控制器中也需要ReturnUrl,所以在Get方法中寫上該參數(shù),要不然跳轉(zhuǎn)不過來的。
其中調(diào)用了?BuildConsentViewModel?方法用于返回一個consent對象,其中我們使用?_identityServerInteractionService?接口獲取了上下文,然后再通過其余的兩個接口找到它客戶端還有資源api的信息。然后再調(diào)用了自定義的?CreateConsentViewModel?對象創(chuàng)建了consent對象。
以上我們的控制器就完成了,現(xiàn)在我們搞一下視圖,在視圖中我們就是簡單做一下,使用ConsentVm作為視圖綁定對象,在之中我遇到了一個Bug,我用?@Html.Partial("_ScopeListItem", item);?的時候突然就報錯了,在頁面上顯示一個Task一大堆的錯誤信息,我也不知道啥情況(望大佬解決),換成不是異步的就行了。
下面是局部視圖的定義,傳過來的對象是?ResourceScopes?和?IdentityScopes?,但他們都是對應(yīng)ScopeVm,在其中呢就是把他們哪些權(quán)限列出來,然后勾選,在它的父頁面已經(jīng)做了post提交,所以我們還得弄個控制器。
?這個方法的參數(shù)是我們所自定義的實體,其中有按鈕還有返回的地址,在其中我們判斷了是否選擇OK,選擇不那就直接賦一個拒絕的指令,如果ok那么就直接判斷是否有這個權(quán)力,因為我們在config中進(jìn)行了配置,然后如果有,呢么就直接添加,在不==null的清空下,我們根據(jù)?returlUrl?這個字符串獲取了請求信息,然后通過?GrantConsentAsync?方法直接同意了授權(quán),然后直接跳轉(zhuǎn)過去,就成功了。
最后,在調(diào)試的時候一定要Client的?RequireConsent?設(shè)置為true.?
原文地址:https://www.cnblogs.com/ZaraNet/p/11146224.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的.NET Core IdentityServer4实战 第六章-Consent授权页的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: .NET开发框架(四)-服务器IIS实践
- 下一篇: GitHub的CI实践(xUnit /
