Когда я регистрируюсь через внешний идентификатор, используя приведенный ниже код, он успешно зарегистрирует меня, но не перенаправляет меня на странице входа в систему. Это застряло на странице после входа; Снимок экрана прикреплен ниже. Я попробовал ответы из того, как перенаправить на определенную веб -страницу после выхода из Entra ID, но это не решило мою проблему. < /P>
Sign out
< /code>
Вот мой код файла программы.using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.EntityFrameworkCore;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using TaskManagement.Context;
var builder = WebApplication.CreateBuilder(args);
JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration);
builder.Services.Configure(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.SaveTokens = true;
options.Events.OnRedirectToIdentityProviderForSignOut += async context =>
{
await NotifyToExternalAPIs(context.HttpContext);
};
// Post login call to extend claims and use later
options.Events.OnTokenValidated += async context =>
{
// Extend claims or call service which responsible to extend claims
// This only calls when user is login and add claims
await ExtenClaimsAsync(context);
};
});
builder.Services.AddDbContext(options =>
{
options.UseInMemoryDatabase("TaskManagements");
});
builder.Services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
}).AddMicrosoftIdentityUI();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseAuthentication();
app.MapStaticAssets();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}")
.WithStaticAssets();
app.Run();
async Task NotifyToExternalAPIs(HttpContext context)
{
// Actual async work here
Console.WriteLine("Performing pre-logout actions");
await Task.Delay(1);
}
async Task ExtenClaimsAsync(TokenValidatedContext context)
{
// we can add db logic here or call db service to fetch data and then
// can extend claims as i did below.
// You can now use todoService
// Actual async work here
if (context.Principal.Identity is ClaimsIdentity identity && identity.IsAuthenticated)
{
// Add or modify claims here
if (!identity.HasClaim(c => c.Type == "CustomClaim"))
{
identity.AddClaim(new Claim("CustomClaim", "new custom claim"));
}
}
await Task.Delay(1);
}
< /code>
Я добавил AccountController, затем метод подписания, как указано здесь. < /p>
public class AccountController : Controller
{
public new IActionResult SignOut()
{
base.SignOut();
return RedirectToAction("Index", "Home");
}
}
После входа я застрял на этой странице, которую она должна перенаправить на страницу входа в систему.>
Когда я регистрируюсь через внешний идентификатор, используя приведенный ниже код, он успешно зарегистрирует меня, но не перенаправляет меня на странице входа в систему. Это застряло на странице после входа; Снимок экрана прикреплен ниже. Я попробовал ответы из того, как перенаправить на определенную веб -страницу после выхода из Entra ID, но это не решило мою проблему. < /P> [code]Sign out < /code> Вот мой код файла программы.using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc.Authorization; using Microsoft.EntityFrameworkCore; using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using TaskManagement.Context;
options.Events.OnRedirectToIdentityProviderForSignOut += async context => { await NotifyToExternalAPIs(context.HttpContext); }; // Post login call to extend claims and use later options.Events.OnTokenValidated += async context => { // Extend claims or call service which responsible to extend claims // This only calls when user is login and add claims
builder.Services.AddControllersWithViews(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();
var app = builder.Build();
// Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); }
// we can add db logic here or call db service to fetch data and then // can extend claims as i did below.
// You can now use todoService // Actual async work here if (context.Principal.Identity is ClaimsIdentity identity && identity.IsAuthenticated) { // Add or modify claims here if (!identity.HasClaim(c => c.Type == "CustomClaim")) { identity.AddClaim(new Claim("CustomClaim", "new custom claim")); } } await Task.Delay(1); } < /code> Я добавил AccountController, затем метод подписания, как указано здесь. < /p> public class AccountController : Controller { public new IActionResult SignOut() { base.SignOut();
return RedirectToAction("Index", "Home"); } } [/code] После входа я застрял на этой странице, которую она должна перенаправить на страницу входа в систему.>
Когда я подписываю на внешний идентификатор, используя код ниже. Его вход успешно, но не перенаправляйте меня на странице входа в систему. Я не могу понять, чего мне не хватает. На самом деле он застрял на странице после того, как скриншот входа...
Когда я подписываю на внешний идентификатор, используя код ниже. Его вход успешно, но не перенаправляйте меня на странице входа в систему. Я не могу понять, чего мне не хватает. На самом деле он застрял на странице после того, как скриншот входа...
Я пытаюсь перенаправить свою страницу входа на страницу панели управления, но после успеха она снова отображает мою страницу входа. Кажется, моя функция заголовка не работает или может быть где-то ошибка. Я уже создал echo, чтобы проверить...
Я обновил свои проекты с использования AAD B2C до внешнего идентификатора Microsoft Entra (B2C). Потоки регистрации signin работают над моими веб-проектами с моим тестовым арендатором. У меня есть некоторые счета тестов, которые необходимо проверять...
Я обновил свои проекты с использования AAD B2C до внешнего идентификатора Microsoft Entra (B2C). Потоки регистрации signin работают над моими веб-проектами с моим тестовым арендатором. У меня есть некоторые счета тестов, которые необходимо проверять...