我正在建立以下网址
https://login.microsoftonline.com/<tenantid>/oauth2/logout?client_id=<clientId>&post_logout_redirect_uri=<encodedurl>
Run Code Online (Sandbox Code Playgroud)
看起来像
https://login.microsoftonline.com/f4aaf6e1-ffff-ffff-bb63-4e8ebf728113/oauth2/logout?client_id=f562b4e3-ffff-ffff-b4bb-49ca64216e75&post_logout_redirect_uri=https%3A%2F%2Fmyazureapp.azurewebsites.net
Run Code Online (Sandbox Code Playgroud)
它注销了我,但没有将我重定向回我的应用程序
像这样的URL天青
https://login.microsoftonline.com/common/oauth2/logout?post_logout_redirect_uri=https%3a%2f%2fmanage.windowsazure.com%2fSignOut%2fComplete
Run Code Online (Sandbox Code Playgroud)
我查看了建议的相关Q,并尝试了一些变体。
编辑它原来是一个间歇性的问题,我想这是由于在执行开发/测试周期时某些cookie /其他状态未重置。使用全新的浏览器,它可以工作。退出后,屏幕上会显示诸如“在我们退出时稍候片刻”之类的内容,然后重定向,如果退出后屏幕上显示“您已退出,请关闭浏览器”。
我的 Main 中有以下代码
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("System", LogEventLevel.Warning)
.MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.ApplicationInsights(
configuration["ApplicationInsights:InstrumentationKey"],
new CustomConverter())
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
用.UseSerilog();我的CreateHostBuilder方法。
然后在我的Configure
app.UseSerilogRequestLogging();
Run Code Online (Sandbox Code Playgroud)
日志正在到达应用程序见解,但Requests被记录为Traces
我相信这是由于app.UseSerilogRequestLogging();不知道App Insights并且它只是触发了一个简单的日志,而 App Insights 不知道它是一个请求跟踪日志,因此它只是将其记录为Trace
如何将UseSerilogRequestLogginglog 生成的日志作为Requestin App Insights?
我有一个AuthorizationHandler,我现在想返回一个自定义状态代码(或文本),我只是想使其返回429(这是速率限制,但不相关)
public class ReCaptchaHandler : AuthorizationHandler<ReCaptchaRequirement>
{
private readonly ReCaptcha _reCaptcha;
private readonly IHttpContextAccessor _accessor;
public ReCaptchaHandler(ReCaptcha reCaptcha, IHttpContextAccessor accessor)
{
_reCaptcha = reCaptcha;
_accessor = accessor;
}
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
ReCaptchaRequirement requirement)
{
context.Fail();
_accessor.HttpContext.Response.StatusCode = 429;
return Task.CompletedTask;
}
}
public class ReCaptchaRequirement : IAuthorizationRequirement
{
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在尝试将status设置为429 _accessor.HttpContext.Response.StatusCode = 429;
我尝试使用http上下文var filterContext = context.Resource as AuthorizationFilterContext;,然后filterContext.HttpContext
我按照以下方式创建我的政策
services.AddSingleton<IAuthorizationHandler, ReCaptchaHandler>();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddAuthorization(options =>
{
options.AddPolicy("ReCaptcha",
policy => policy.Requirements.Add(new ReCaptchaRequirement()));
}); …Run Code Online (Sandbox Code Playgroud)