在 ASP.NET Core 6 MVC 中,多租户应用程序租户具有不同的路径基础,例如/tenant1
和/tenant2
.
HttpContext PathBase
来自请求 url 的中间件集。
SignInAsync
方法始终将身份验证 cookie 路径设置为根路径/
。
我正在尝试PathBase
使用此代码段设置身份验证 cookie 路径:
Path = Request.PathBase.HasValue ? Request.PathBase.Value : "/"
下面显示的代码会引发编译时错误,因为AuthenticationProperties
没有Path
属性。如何设置 cookiePath
属性,以便不同的用户可以使用不同的基本路径进行身份验证?
public class AccountController : Controller
{
public async Task<IActionResult> LogOn(string user, string password)
{
if (password != "secret")
throw new ApplicationException("Bad password");
var claims = new List<Claim> { new Claim(ClaimTypes.Name, user) };
var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var authProperties = new AuthenticationProperties
{
IsPersistent = true,
AllowRefresh = true,
// TODO: this throws compile error since Path property does not exist
Path = Request.PathBase.HasValue ? Request.PathBase.Value : "/"
};
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), authProperties);
}
}