Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net Identity 2.1中的文件夹授权_.net_Authorization_Asp.net Identity - Fatal编程技术网

asp.net Identity 2.1中的文件夹授权

asp.net Identity 2.1中的文件夹授权,.net,authorization,asp.net-identity,.net,Authorization,Asp.net Identity,我在.net identity 2.1中搜索了访问文件夹或文件的基于角色的授权,但找不到,因为存在基于表单的授权 <location path="Pictures"> <system.web> <authorization> <allow roles="Administrators"/> //Allows users in Admin role <deny users="*"/&g

我在.net identity 2.1中搜索了访问文件夹或文件的基于角色的授权,但找不到,因为存在基于表单的授权

    <location path="Pictures">
   <system.web>
      <authorization>
         <allow roles="Administrators"/> //Allows users in Admin role
         <deny users="*"/> // deny everyone else
      </authorization>
   </system.web>
</location>

//允许用户担任管理员角色
//拒绝其他人

有没有办法在.net identity中实现此功能?

您可以编写一个筛选器:

public class FilterStaticFilesAttribute : AuthorizationFilterAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        var request = actionContext.Request;

        if (request.RequestUri.LocalPath.StartsWith("\Pictures", System.StringComparison.InvariantCultureIgnoreCase))
        {
            if (!request.GetOwinContext().Authentication.User.IsInRole("Administrators"))
            {
                actionContext.Response.StatusCode = HttpStatusCode.Forbidden;
                return;
            }
        }
        base.OnAuthorization(actionContext);
    }
}
在WebApiConfig中注册。注册:

public static void Register(HttpConfiguration config)
{
    config.Filters.Add(new FilterStaticFilesAttribute());
}

其作用:所有请求都将通过已注册的筛选器。在筛选器内部,确定它是否是对静态文件位置的调用。只有当用户具有管理员角色时,才能授予访问权限。

我的回答有帮助吗?只是好奇,因为根本没有反馈。如果没有,也许我可以改进答案。您的答案确实很有帮助,因为现在我知道没有简单的方法可以实现基于角色的授权来访问.net identity 2.1中的文件夹或文件。