任务21:运行Consent Page

修改 Config.cs 中的 RequireConsent 为 true,这样登录的时候就会跳转到 Consent 页面

修改 ConsentController 的 Index 为异步

[HttpGet]
public async Task<IActionResult> Index(string returnUrl)
{
var model = await BuildConsentViewModel(returnUrl); if (model == null)
{ } return View(model);
}

构造函数改为 public

public ConsentController

Index.cshtml 添加用户信息和 icon

@if (Model.IdentityScopes.Any())
{
<div>
<span class="glyphicon glyphicon-user"></span>
用户信息
</div>
<ul class="list-group">
@foreach (var scope in Model.IdentityScopes)
{
@Html.Partial("_ScopeListitem", scope)
}
</ul>
}

_ScopeListitem.cshtml

@using mvcCookieAuthSample.ViewModels;
@model ScopeViewModel <li>
<label>
<input type="checkbox"
name="ScopesConsented"
id="scopes_@Model.Name"
value="@Model.Name"
checked="@Model.Checked"
disabled="@Model.Required"/> <strong>@Model.Name</strong>
@if (Model.Emphasize)
{
<span class="glyphicon glyphicon-exclamation-sign"></span>
}
</label>
@if (string.IsNullOrEmpty(Model.Description))
{
<div>
<label for="scopes_@Model.Name">@Model.Description</label>
</div>
}
</li>

启动服务端 mvcCookieAuthSample,再启动客户端 MvcClient,登录之后跳转到 Consent 页面

如果界面出现乱码,可将文件 Index.cshtml 与 _ScopeListitem.cshtml 另存为 UTF-8 编码

在 Config 的 GetClients 中补充客户端信息

public static IEnumerable<Client> GetClients()
{
return new List<Client>
{
new Client()
{
ClientId = "client",
ClientName = "Client",
ClientUri = "http://localhost:5001",
LogoUri = "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQe9J82GNBVtbc0Co3IV63l4mQgRlMdn4lQI7cDmICHjA4VmFuv&usqp=CAU",
AllowRememberConsent = true,
AllowedGrantTypes = GrantTypes.Implicit,// 隐式模式
ClientSecrets =
{
new Secret("secret".Sha256())
}, RequireConsent = true,
RedirectUris = { "http://localhost:5001/signin-oidc" },
PostLogoutRedirectUris = { "http://localhost:5001/signout-callback-oidc" }, //AllowedScopes = {"api"},
AllowedScopes =
{
IdentityServerConstants.StandardScopes.Profile,
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Email,
}
}
};
}

修改 Index.cshtml,不然看不到图片

@if (!string.IsNullOrWhiteSpace(Model.ClientLogoUrl))

再次启动程序,显示如下:

课程链接

http://video.jessetalk.cn/course/explore

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。

ASP.NET Core分布式项目实战(运行Consent Page)--学习笔记的更多相关文章

  1. ASP.NET Core分布式项目实战

    ASP.NET Core开发者成长路线图 asp.net core 官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/ ...

  2. 【笔记目录1】ASP.NET Core分布式项目实战

    当前标签: ASP.NET Core分布式项目实战 共2页: 1 2 下一页  35.Docker安装Mysql挂载Host Volume GASA 2019-06-20 22:02 阅读:51 评论 ...

  3. 【笔记目录2】ASP.NET Core分布式项目实战

    当前标签: ASP.NET Core分布式项目实战 共2页: 上一页 1 2  11.ClientCredential模式总结 GASA 2019-03-11 12:59 阅读:26 评论:0 10. ...

  4. 【ASP.NET Core分布式项目实战】(三)整理IdentityServer4 MVC授权、Consent功能实现

    本博客根据http://video.jessetalk.cn/my/course/5视频整理(内容可能会有部分,推荐看源视频学习) 前言 由于之前的博客都是基于其他的博客进行开发,现在重新整理一下方便 ...

  5. ASP.NET Core分布式项目实战-目录

    前言 今年是2018年,发现已经有4年没有写博客了,在这4年的时光里,接触了很多的.NET技术,自己的技术也得到很大的进步.在这段时光里面很感谢张队长以及其他开发者一直对.NET Core开源社区做出 ...

  6. 【ASP.NET Core分布式项目实战】(五)Docker制作dotnet core控制台程序镜像

    Docker制作dotnet core控制台程序镜像 基于dotnet SDK 新建控制台程序 mkdir /home/console cd /home/console dotnet new cons ...

  7. 【ASP.NET Core分布式项目实战】(六)Gitlab安装

    Gitlab GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能.使用Git作为代码管理工具,并在此基础上搭建起来的web服务 ...

  8. 【ASP.NET Core分布式项目实战】(二)oauth2 + oidc 实现 server部分

    本博客根据http://video.jessetalk.cn/my/course/5视频整理(内容可能会有部分,推荐看源视频学习) 资料 我们基于之前的MvcCookieAuthSample来做开发 ...

  9. 【ASP.NET Core分布式项目实战】(一)IdentityServer4登录中心、oauth密码模式identity server4实现

    本博客根据http://video.jessetalk.cn/my/course/5视频整理 资料 OAuth2 流程:http://www.ruanyifeng.com/blog/2014/05/o ...

  10. 【ASP.NET Core分布式项目实战】(四)使用mysql/mysql-server安装mysql

    Docker安装Mysql 拉取镜像 docker pull mysql/mysql-server 运行mysql docker run -d -p : --name mysql01 mysql/my ...

随机推荐

  1. shell 脚本之 disk_monitor

    编写脚本实现监测指定文件夹的磁盘空间.   =========================================================== ## 脚本逻辑介绍 用户通过 --p ...

  2. 搬运 |(有刀🔪慎入)kwdnx、谷雨、更漏与我

    本打算把文案投到官微,但官微说文案太长了,只能放删减版: 那就把文案放博客上吧 写于 癸卯年 戊午月 己亥日. 四年前的冬天我们初见,大家都是青涩的未成年人:在少年班团建的喧闹中,谷雨谈论高数竞赛,k ...

  3. spring--CGLIB动态代理的实现原理

    CGLIB(Code Generation Library)是一个强大的.高性能.高质量的代码生成库,它可以在运行时扩展 Java 类和实现 Java 接口.CGLIB 动态代理是基于继承的方式来实现 ...

  4. 问题--在C++使用strcpy等函数时发生C4996报错

    1.问题如下: C4996:'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To ...

  5. java - 标准类的定义

    一个标准的类需要拥有下面 4个 组成部分: 1. 所有的成员变量都要使用 private 关键字进行修饰 2. 为每一个成员变量编写 set.get 方法 3. 创建一个无参数的构造方法 4. 创建一 ...

  6. JavaScript : 获取文件名后缀

               /** 获取文件后缀               *               * indexOf 和 lastIndexOf 都是索引文件            indexO ...

  7. JMS微服务开发示例(八)双机热备

    双机热备,指两个一模一样的微服务,两个同时在运行,但是只有一个在工作,当工作中的微服务垮掉后,另一个会自行补上. 要实现这个,只需要设置 SingletonService = true. var mi ...

  8. .NET周刊【1月第2期 2024-01-21】

    国内文章 NCC Mocha v0.1.0 发布,.NET 开发的基于 OpenTelemetry 的 APM 系统 https://mp.weixin.qq.com/s/gUx-dqlYqcwgQN ...

  9. [转帖]ss 输出格式说明

    ss 命令输出详解ss 全名socket statistics,是iproute2中的一员ss已经替代netstat,大热于江湖.但是关于ss命令输出的内容,是什么意思呢? [root@test]#  ...

  10. [转帖]mysql - 使用文件中的 mysql 加载数据格式化 csv 日期列

    https://www.coder.work/article/2481907#:~:text=LOAD%20DATA%20INFILE%20%27%2Finvoices%2Finvoice138130 ...