【问题标题】:WebAPI how to disable another user from the adminWebAPI如何从管理员禁用另一个用户
【发布时间】:2019-04-27 06:33:11
【问题描述】:

我在 Visual Studio C# 中创建了一个简单的 WebAPI 作为我的 Angular 后端。 用户可以通过 Angular 前端注册并传递给 WebAPI 中的控制器,以便在后端数据库 (MSSql) 中注册该用户。一切都好。

我正在使用从 Angular 到我的 API 的令牌身份验证,并使用声明和角色来验证用户是否已登录并有权访问所请求的控制器。

作为管理员,我如何禁用其他用户,以便他们立即被锁定?

一个例子是:一个流氓用户开始滥用 Angular 应用程序,我需要立即锁定他们,而不是等到他们的令牌过期并要求他们再次登录。

我可以检查每个控制器以在数据库中查找用户并检查他们的状态,如果我将他们的状态设置为“锁定”然后从控制器返回 403 禁止状态,但这似乎为他们提出的每个数据库请求查找用户很多。

有没有一种“点网”的方式来做到这一点?作为管理员,我希望能够实例化所述用户,将他们的“状态”声明值更改为“锁定”,我只是在发出 api 请求时检查他们的声明,但我看不到更改其他用户声明。

有什么想法吗?

谢谢。

【问题讨论】:

  • 您不必在每个控制器中都实现这一点。查看“web.api 授权过滤器”
  • 除了@IvayloStoev 建议的过滤器之外,您还可以创建一个 .net 委托处理程序并在您的管道检查所有请求的早期将其连接起来。 msdn.microsoft.com/query/…

标签: authentication asp.net-web-api oauth


【解决方案1】:

扩展我上面的评论,我们的管道中有一个处理授权的处理程序。我们确实查看了 Authorization 标头并对其进行了解析,但所有控制器都依赖于我们挂在 Properties 集合中的已解析值。这样一来,所有 AuthZ/AuthN 都发生在此处理程序中,并且任何处理程序在 Properties 集合中设置的内容都是所有应用程序所看到的。

在您的情况下,处理程序需要能够检查您正在使用的任何限制或锁定,并将收到的实际声明替换为您的“用户被锁定”声明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2016-07-23
    相关资源
    最近更新 更多