可以使用Cookie来在两个应用程序之间进行身份验证和授权。可以将以下代码添加到Startup.cs文件中的ConfigureServices方法中:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.Cookie.Domain = "localhost"; options.Cookie.Name = "YourCookieName"; options.Cookie.SameSite = SameSiteMode.None; options.Events.OnRedirectToLogin = context => { context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; return Task.CompletedTask; }; });
这将为您创建一个Cookie身份验证方案,并将其添加到应用程序中。
然后,在您的控制器或操作方法中,您可以设置Cookie来进行身份验证,并检查Cookie以确保用户获得了授权。
例如,您可以使用以下代码来设置Cookie:
var claims = new List
await HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity));
这将为名为'User1”的用户创建一个Cookie,并将其授予'admin”角色。
然后,在您的IFrame中,您可以使用JavaScript从父级应用程序中访问Cookie。您可以使用以下代码从Cookie中获取身份验证令牌:
function getToken() { var token = document.cookie .split('; ') .find(row => row.startsWith('YourCookieName=')) .split('=')[1]; return token; }
您可以在IFrame中使用此函数,以便您可以从父级应用程序中获取身份验证令牌,以便您可以在您的IFrame中进行授权API调用。
最后,在您的Startup.cs文件中的Configure方法中,您可以添加以下代码来确保ASP.net Core应用程序不会将用户重定向到登录页:
app.Use(async (context, next) => { var authScheme = CookieAuthenticationDefaults.AuthenticationScheme; var user = context.User; if (user?.Identity?.IsAuthenticated ?? false) { await next(); } else if (context.Request.Path.StartsWithSegments("/api")) { context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; } else
上一篇:ASP.NETCore3.1WebAPI:如何保护返回模型中的敏感数据?
下一篇:ASP.NETCore3.1Web应用程序失败,提示找不到版本为“3.1.27”的'Microsoft.NETCore.App'错误。