Asp.net core 使用ASP.NET Core 2身份验证时如何获取登录路径?

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"));

我正在以标准方式注册.NET核心ASP.NET应用程序的身份验证:

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)