Asp.net core 使用ASP.NET Core 2身份验证时如何获取登录路径?
我正在以标准方式注册.NET核心ASP.NET应用程序的身份验证:Asp.net core 使用ASP.NET Core 2身份验证时如何获取登录路径?,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我正在以标准方式注册.NET核心ASP.NET应用程序的身份验证: public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(o => o.LoginPath = new PathString("/Auth/Login"));
public void ConfigureServices(IServiceCollection services) {
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(o => o.LoginPath = new PathString("/Auth/Login"));
// ...
}
我如何获得该值以供使用?假设我在控制器中有一些逻辑,无论出于什么原因,我都希望有登录页面的路径。。。比如:
public class HomeController : Controller {
public async Task<ActionResult> Index() {
var loginUrl = ...;
// ...
}
}
公共类HomeController:控制器{
公共异步任务索引(){
var loginUrl=。。。;
// ...
}
}
在本例中,如何获取登录路径?将登录路径分配给另一个静态类中的常量值。然后使用操作中的请求对象属性构建url: var loginUrl=$“{Request.Scheme}://{Request.Host}{Constants.LoginPath}”
上面是一个字符串,但如果需要,您可以创建Uri。将登录路径分配给另一个静态类中的常量值。然后使用操作中的请求对象属性构建url: var loginUrl=$“{Request.Scheme}://{Request.Host}{Constants.LoginPath}”
上面是一个字符串,但如果需要,您可以创建Uri。对于
LoginPath
,您可以尝试IOptionsMonitor
,如下所示:
public class HomeController : Controller
{
private readonly CookieAuthenticationOptions _cookieAuthenticationOptions;
public HomeController(IOptionsMonitor<CookieAuthenticationOptions> optionsMonitor)
{
_cookieAuthenticationOptions = optionsMonitor.Get(CookieAuthenticationDefaults.AuthenticationScheme);
var loginPath = _cookieAuthenticationOptions.LoginPath;
}
}
公共类HomeController:控制器
{
私有只读CookieAuthenticationOptions\u CookieAuthenticationOptions;
公共家庭控制器(IOptionsMonitor选项监视器)
{
_cookieAuthenticationOptions=选项Monitor.Get(CookieAuthenticationDefaults.AuthenticationScheme);
var loginPath=\u cookieAuthenticationOptions.loginPath;
}
}
对于登录路径
,您可以尝试IOptionsMonitor
如下所示:
public class HomeController : Controller
{
private readonly CookieAuthenticationOptions _cookieAuthenticationOptions;
public HomeController(IOptionsMonitor<CookieAuthenticationOptions> optionsMonitor)
{
_cookieAuthenticationOptions = optionsMonitor.Get(CookieAuthenticationDefaults.AuthenticationScheme);
var loginPath = _cookieAuthenticationOptions.LoginPath;
}
}
公共类HomeController:控制器
{
私有只读CookieAuthenticationOptions\u CookieAuthenticationOptions;
公共家庭控制器(IOptionsMonitor选项监视器)
{
_cookieAuthenticationOptions=选项Monitor.Get(CookieAuthenticationDefaults.AuthenticationScheme);
var loginPath=\u cookieAuthenticationOptions.loginPath;
}
}
在这里,当const-string
足够时,我试图仔细考虑一下框架的用法。谢谢你的建议!在这里,当conststring
足够时,我试图仔细考虑一下框架的用法。谢谢你的建议!这对我来说几乎奏效了,不得不做一个小小的改变,我在asp.NETCore3.1上<代码>\u cookieAuthenticationOptions=选项Monitor.Get(IdentityConstants.ApplicationScheme)代码>。这几乎适用于我,不得不做一个小改动,我在asp.net core 3.1上<代码>\u cookieAuthenticationOptions=选项Monitor.Get(IdentityConstants.ApplicationScheme)代码>。