我不确定该怎么问,但是事情就这样了。我试图使来自控制器的路由或URL仅在用户登录后才可访问。我不知道在asp.net core 2.1中找到这些代码。我知道该如何做。
@if (SignInManager.IsSignedIn(User)){ //authorized section }
但是我不确定控制器/路由部分。因此,我需要您的帮助才能正确学习。
谢谢。
答案 0 :(得分:1)
我不确定您要问的是什么。如果您的问题是如何使该路由根本不存在,那是不可能的。如果暴露了,那就暴露了。但是,您可以强制授权用户访问它,这使我想到下一个可能的解释:如何强制授权用户访问特定路由。那很简单;您只需使用Authorize
属性装饰动作即可:
[Authorize]
public IActionResult OnlyForAuthenticateUsers()
您还可以装饰控制器类,以保护控制器中的每个动作:
[Authorize]
public class MyController
如果您只需要打开一个或多个操作,例如控制器中的“登录”操作,否则该操作仅对经过身份验证的用户可用,则可以使用AllowAnonymous
属性:
[AllowAnonymous]
public IActionResult SignIn()
最后,Authorize
属性还使您可以指定除进行身份验证之外还必须满足的角色和/或策略。例如,要将特定操作仅锁定为“管理员”用户,则可以执行类似[Authorize(Roles = "Admin")]
的操作。