相关疑难解决方法(0)

如何在ASP.NET Core中创建自定义AuthorizeAttribute?

我正在尝试在ASP.NET Core中创建自定义授权属性.在以前的版本中,可以覆盖bool AuthorizeCore(HttpContextBase httpContext).但这不再存在于AuthorizeAttribute.

制作自定义AuthorizeAttribute的当前方法是什么?

我想要完成的任务:我在Header Authorization中收到一个会话ID.从该ID我将知道特定动作是否有效.

c# asp.net authorization asp.net-core-mvc asp.net-core

362
推荐指数
13
解决办法
19万
查看次数

如何使用Asp.Net Core实现基于权限的访问控制

我正在尝试使用aspnet核心实现基于权限的访问控制.为了动态管理用户角色和权限(create_product,delete_product等),它们存储在数据库中.数据模型类似于http://i.stack.imgur.com/CHMPE.png

在aspnet核心之前(在MVC 5中)我使用AuthorizeAttribute下面的自定义来处理这个问题:

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    private readonly string _permissionName { get; set; }
    [Inject]
    public IAccessControlService _accessControlService { get; set; }

    public CustomAuthorizeAttribute(string permissionName = "")
    {
        _permissionName = permissionName;
    }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);
        var user = _accessControlService.GetUser();
        if (PermissionName != "" && !user.HasPermission(_permissionName))
        {
            // set error result
            filterContext.HttpContext.Response.StatusCode = 403;
            return;
        }
        filterContext.HttpContext.Items["CUSTOM_USER"] = user;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我在下面的动作方法中使用它:

[HttpGet]
[CustomAuthorize(PermissionEnum.PERSON_LIST)]
public ActionResult Index(PersonListQuery query){ }
Run Code Online (Sandbox Code Playgroud)

另外,我在视图中使用HttpContext.Items ["CUSTOM_USER"]来显示或隐藏html部分: …

c# asp.net-mvc access-control asp.net-core

38
推荐指数
1
解决办法
3万
查看次数

动态授权角色asp.net核心

这不是一个重复的问题,或者说其他解决方案中给出的解决方案没有奏效.

让我们说有一个cntroller

[Authorize(Roles=//set dynamically)]
public IActionResult DashBoard(LoginModel model)
{
}
Run Code Online (Sandbox Code Playgroud)

我在以下问题中尝试了解决方案

1)添加角色以授权属性

2)动态地为角色分配控制器动作权限

3)动态添加角色以授权控制器的属性(错误:句柄方法 - 找不到合适的方法来覆盖)

4)基于策略的授权可以更加动态

所有这些解决方案都不起作用,因为接口中覆盖的方法不存在(例如,authorizeAttribute不包含AuthorizeCore的定义),或者在某些情况下,IServiceCollection服务不包含特定方法

asp.net authorize-attribute asp.net-identity role-based-access-control asp.net-core

4
推荐指数
1
解决办法
6544
查看次数