我正在以标准方式注册.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
?
答案 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;
}
}