如何仅在登录asp.net core 2.1后才使路由可用?

时间:2018-11-21 06:48:56

标签: authentication controller routes asp.net-identity asp.net-core-2.1

我不确定该怎么问,但是事情就这样了。我试图使来自控制器的路由或URL仅在用户登录后才可访问。我不知道在asp.net core 2.1中找到这些代码。我知道该如何做。

  

@if (SignInManager.IsSignedIn(User)){ //authorized section }

但是我不确定控制器/路由部分。因此,我需要您的帮助才能正确学习。

谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定您要问的是什么。如果您的问题是如何使该路由根本不存在,那是不可能的。如果暴露了,那就暴露了。但是,您可以强制授权用户访问它,这使我想到下一个可能的解释:如何强制授权用户访问特定路由。那很简单;您只需使用Authorize属性装饰动作即可:

[Authorize]
public IActionResult OnlyForAuthenticateUsers()

您还可以装饰控制器类,以保护控制器中的每个动作:

[Authorize]
public class MyController

如果您只需要打开一个或多个操作,例如控制器中的“登录”操作,否则该操作仅对经过身份验证的用户可用,则可以使用AllowAnonymous属性:

[AllowAnonymous]
public IActionResult SignIn()

最后,Authorize属性还使您可以指定除进行身份验证之外还必须满足的角色和/或策略。例如,要将特定操作仅锁定为“管理员”用户,则可以执行类似[Authorize(Roles = "Admin")]的操作。