使用ASP.NET Core 2身份验证时如何获取LoginPath?

时间:2019-01-03 19:23:28

标签: asp.net-core asp.net-core-mvc

我正在以标准方式注册.NET Core 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 = ...;

        // ...
    }
}

在此示例中,我如何得到loginUrl

2 个答案:

答案 0 :(得分:2)

将登录路径分配给另一个静态类中的常量值。然后使用操作中的Request对象属性来构建url:

var loginUrl = $“ {Request.Scheme}:// {Request.Host} {Constants.LoginPath}”

上面是一个字符串,但是如果需要,您可以创建一个Uri。

答案 1 :(得分:1)

对于LoginPath,您可以尝试使用IOptionsMonitor<CookieAuthenticationOptions>,如下所示:

public class HomeController : Controller
{
    private readonly CookieAuthenticationOptions _cookieAuthenticationOptions;
    public HomeController(IOptionsMonitor<CookieAuthenticationOptions> optionsMonitor)
    {
        _cookieAuthenticationOptions  = optionsMonitor.Get(CookieAuthenticationDefaults.AuthenticationScheme);
        var loginPath = _cookieAuthenticationOptions.LoginPath;
    }        
}
相关问题