使用会话在 MVC 控制器中使用 [Authenticate] 属性来授权用户?

Use [Authenticate] attribute in MVC controller using sessions to authorize users?

我一直在网上搜索类似的解决方案,但一切似乎过于复杂,目前,我有一个 UserController,我只希望登录的用户访问,我当前的解决方案涉及使用 if 语句,但我想知道是否可能使用 [Authorize] 属性并将其应用于方法或整个控制器?

public class UserController : ASessionController {
    public UserController (IAmazonDynamoDB dynamoDbClient, DynamoDBContext dynamoDbContext) : base(dynamoDbClient, dynamoDbContext) {
    }

    // [Authorize]
    public IActionResult Index () {
        // check session variable
        if(!UserIsLoggedIn()){ /*redirect to sign in*/ } 
        return View();
    }
}

也许我不明白这是否是 Authorize 属性的用途?提前谢谢你。

您可以在端点和/或控制器本身上使用授权属性 它将强制对用户进行身份验证以再次访问装饰的项目。 此外,您还可以将其限制为具有给定或多个角色的经过身份验证的用户,如示例

[Authorize(Roles = "Administrator")]
public IActionResult Index()
{
    ...
}

[Authorize(Roles = "Administrator,Guest")]
public IActionResult NotAnIIndex()
{
    ...
}

但是你应该阅读 Microsoft Documentation 教程