使用 ASP.NET Web Api 和 Angular 10 的授权
Authorisation with ASP.NET Web Api and Angular 10
我正在寻找一种方法来实现对我的网络应用程序的授权,只有某些用户应该能够访问该应用程序的敏感部分。我将使用windows认证,添加到web config的用户将有资格访问应用程序,用户管理部分将只对授权用户可见。
具有完全访问权限的用户应该能够打开用户管理部分,这将使他能够从 Web 配置中编辑其他用户或 add/remove 用户的访问权限,就像您可以做的那样来自 IIS 管理器。
我正在使用 ASP.NET Web Api 和 Angular 10. 实施这种方法的好方法是什么?
我想首先在应用程序启动时将 Web 配置中的用户与数据库同步。我将让最新的用户访问通过 Web 配置手动添加的应用程序,另一方面,Web 配置将接收通过应用程序的用户管理部分添加的新用户。授权规则将存储在数据库中,应用程序的特定部分将有访问权限,我会向前端发送这样一个对象:
{
"username": {
"email_list": true,
"calculation_area": false
}
}
如果用户具有访问权限,则应用程序的某些部分将可见,例如:
<nav class="menu">
<ul>
<li><a href="/main">Main</a></li>
<li><a href="/email_list" *ngIf="userHasAccessToEmailList()">Emails</a></li>
<li><a href="/calculation_area" *ngIf="userHasAccessToCalculationArea()>Calculation</a></li>
</ul>
</nav>
我知道这不是 DRY,因为我检查了每个部分用户是否有访问权限,我会寻找更好的解决方案,但你明白了理论。我将使用 WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity
从正在查看应用程序的人那里获取用户名。该应用程序将 运行 在一个身份下,该身份有权访问我使用的某些数据源,这就是为什么我需要将 运行 使用该应用程序的当前用户与通过浏览器。我将在启动时获得调用该应用程序的信息,并可以检查他拥有哪些访问权限。我会隐藏该用户无权访问的应用程序部分,并在每次 http 调用时检查发出请求的用户的访问权限,也许 angular 的路由守卫是处理此问题的好方法逻辑。你对此有何看法?我应该考虑什么,陷阱在哪里?
首先确保您的 API。要求对整个应用程序进行身份验证,并在每个敏感控制器上放置授权属性。基本上你的目标应该是公开一个安全的应用程序,即使有人花时间制作自己的客户端。
然后设置 Angular 客户端。根据您的要求,为管理任务创建一个单独的客户端可能是个好主意。您可以使用控制器仅向管理员用户提供管理员客户端。
我正在寻找一种方法来实现对我的网络应用程序的授权,只有某些用户应该能够访问该应用程序的敏感部分。我将使用windows认证,添加到web config的用户将有资格访问应用程序,用户管理部分将只对授权用户可见。
具有完全访问权限的用户应该能够打开用户管理部分,这将使他能够从 Web 配置中编辑其他用户或 add/remove 用户的访问权限,就像您可以做的那样来自 IIS 管理器。
我正在使用 ASP.NET Web Api 和 Angular 10. 实施这种方法的好方法是什么?
我想首先在应用程序启动时将 Web 配置中的用户与数据库同步。我将让最新的用户访问通过 Web 配置手动添加的应用程序,另一方面,Web 配置将接收通过应用程序的用户管理部分添加的新用户。授权规则将存储在数据库中,应用程序的特定部分将有访问权限,我会向前端发送这样一个对象:
{
"username": {
"email_list": true,
"calculation_area": false
}
}
如果用户具有访问权限,则应用程序的某些部分将可见,例如:
<nav class="menu">
<ul>
<li><a href="/main">Main</a></li>
<li><a href="/email_list" *ngIf="userHasAccessToEmailList()">Emails</a></li>
<li><a href="/calculation_area" *ngIf="userHasAccessToCalculationArea()>Calculation</a></li>
</ul>
</nav>
我知道这不是 DRY,因为我检查了每个部分用户是否有访问权限,我会寻找更好的解决方案,但你明白了理论。我将使用 WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity
从正在查看应用程序的人那里获取用户名。该应用程序将 运行 在一个身份下,该身份有权访问我使用的某些数据源,这就是为什么我需要将 运行 使用该应用程序的当前用户与通过浏览器。我将在启动时获得调用该应用程序的信息,并可以检查他拥有哪些访问权限。我会隐藏该用户无权访问的应用程序部分,并在每次 http 调用时检查发出请求的用户的访问权限,也许 angular 的路由守卫是处理此问题的好方法逻辑。你对此有何看法?我应该考虑什么,陷阱在哪里?
首先确保您的 API。要求对整个应用程序进行身份验证,并在每个敏感控制器上放置授权属性。基本上你的目标应该是公开一个安全的应用程序,即使有人花时间制作自己的客户端。
然后设置 Angular 客户端。根据您的要求,为管理任务创建一个单独的客户端可能是个好主意。您可以使用控制器仅向管理员用户提供管理员客户端。