asp.net-core – .NET Core中的重定向OpenID Connect中间件?
发布时间:2020-12-16 09:42:24 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试处理一个场景,当我正在验证的OpenID Connect服务器返回一组特定的查询字符串时.当条件匹配时,我想基本上将用户重定向到“拒绝访问”页面.无论出于何种原因,下面包含重定向的注释行实际上都不会触发.有没有更好/不同的方式去做我想要的事情? 以下
我正在尝试处理一个场景,当我正在验证的OpenID Connect服务器返回一组特定的查询字符串时.当条件匹配时,我想基本上将用户重定向到“拒绝访问”页面.无论出于何种原因,下面包含重定向的注释行实际上都不会触发.有没有更好/不同的方式去做我想要的事情?
以下是在Startup.cs中配置OpenID Connect中间件的方法: services.Configure<OpenIdConnectOptions>(options => { // ... options.Events = new OpenIdConnectEvents { OnMessageReceived = context => { if (context.HttpContext.Request.Query.ContainsKey("error")) { context.HandleResponse(); // <-- Fires context.Response.Redirect("/AccessDenied"); // <-- Redirect fires but user is not redirected } return Task.FromResult(0); } } } 更新:使用以下调整: options.Events = new OpenIdConnectEvents { OnRemoteFailure = context => { context.HandleResponse(); context.Response.Redirect("AccessDenied?error=" + context.Failure.Message); return Task.FromResult(0); },// ... }; 解决方法
您不应该在重定向之前调用HandleResponse(),因为在这种情况下,您“告诉”在HTTP管道中停止处理请求.改为:
if (context.HttpContext.Request.Query.ContainsKey("error")) { context.Response.Redirect("/AccessDenied"); context.HandleResponse(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – NullReferenceException在PipelineStepManager.
- asp.net-core – Visual Studio 2015中的ASP.NET核心支持?
- EF数据库初始化策略及种子数据的添加
- 将额外的信息与ASP.NET MVC成员关联
- asp.net – GridView的RowDataBound函数
- asp.net-mvc – MVC,FluentValidation和Ninject的单元测试接
- asp.net-mvc – 找到相同类型的两个实体之间的差异
- asp.net – WebForms中的强类型容器
- asp.net-mvc – 如何检查用户是否在Action中被授权
- 在Docker上部署自动更新ssl证书的nginx + .NET Core
推荐文章
站长推荐
- asp.net – 无法创建页面方法“GetCompletionLis
- asp.net-mvc – 使用EF Code First和ASP.NET MVC
- asp.net-mvc – ASP.NET MVC从控制器抛出并处理错
- asp.net – 如何使用Response.OutputStream.Writ
- asp.net – 如何将kendo Ui下拉选择值的ID传递给
- asp.net-mvc – ASP.NET MVC 2 on mono
- 如何用asp.net页面提供javascript?
- asp.net-mvc – 设计ASP.NET MVC 3站点以支持客户
- ASP和C#之间的语义差异?
- ASP.Net Cookieless如何工作?
热点阅读