【发布时间】:2018-12-09 16:34:29
【问题描述】:
这是我的代码,可以正常工作。如果我获得授权,它可以工作,如果没有,它会将我重定向到身份服务器并在重新登录后。
[Authorize]
public async Task<IActionResult> Index()
{
return View("../Secure/Index");
}
如果用户未获得授权,我想返回另一个视图并且不将他重定向到身份服务器。我就是这样尝试的。
public async Task<IActionResult> Index()
{
if (User == null || User.Identity == null || !User.Identity.IsAuthenticated )
{
return View("../Public/Index");
}
return View("../Secure/Index");
}
但是它不起作用。 User.Identity.IsAuthenticated 始终为假。即使我之前在身份服务器上并登录过。似乎 [Authorize] 属性正在做一些更可能设置 User.Identity.IsAuthenticated 的事情。
我的问题是,我怎么知道我是没有属性的?
谢谢
【问题讨论】:
-
Authorize属性触发身份验证处理程序以加载HttpContext.User。要在没有该属性的情况下执行此操作,您可以创建中间件来填充HttpContext.User属性,但这会完全违背获得授权的目的。 -
@Brad 谢谢你的回复。你能给我一些例子如何调用身份验证处理程序吗?
-
为什么不想使用 Authorize 属性?
-
因为它会自动重定向到身份服务器。我需要我的应用程序有一个 url,用于欢迎页面和实际应用程序。因此,当您未登录时,将显示欢迎页面,当您登录时,将显示应用程序。我有地址192.168.0.100,一旦有欢迎页面。我可以点击它登录。一旦我登录,就会有实际的应用程序。
标签: asp.net-core authorization identityserver4