【发布时间】:2021-04-09 10:12:00
【问题描述】:
我想创建一个接受BranchId、StaffId 和RoleId 的自定义授权。仅允许员工在登录应用程序时仅查看他的分支机构,因为branchId 是添加的员工网址的一部分。
我设法从url获取id并传递给字符串,但我不知道如何使用这个id来检查当前用户的branch id,然后检查工作人员是否应该在允许访问之前在分支上以及担任什么角色。
这是我的例子。我是.net 的新手。这种方法怎么办?
protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context,
RestrictViewRequirement requirement)
{
int? branchId = null;
if (context.Resource is AuthorizationFilterContext authContext)
{
var tmp = authContext.HttpContext.Request.Query["branchId"].ToString();
if (!string.IsNullOrEmpty(tmp))
{
branchId = int.Parse(tmp);
}
}
}
【问题讨论】:
-
您有两个选项可以在请求中包含用户数据,第一个选项如果您使用的是普通 ASP.NET(在您的应用程序中有
session,用户成功登录后使用会话存储用户数据)。其次,如果您使用 API,您可以使用JWT(Json Web 令牌)并将其传递给前端,因此在每个请求中,您都拥有基于它授权和验证用户的令牌(您可以在里面声明令牌,例如 branchID 等) -
我使用的是 ASP.NET 用户在满足所有要求之前不允许成功登录。
标签: c# asp.net .net asp.net-mvc asp.net-core