Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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
C# 对控制器操作方法执行自定义授权检查_C#_Asp.net_Asp.net Mvc 3_Entity Framework - Fatal编程技术网

C# 对控制器操作方法执行自定义授权检查

C# 对控制器操作方法执行自定义授权检查,c#,asp.net,asp.net-mvc-3,entity-framework,C#,Asp.net,Asp.net Mvc 3,Entity Framework,我正在开发一个内容管理系统,其中我有一个控制器,显示分配给当前登录用户供其审阅的所有文章,然后用户可以批准或拒绝此文章。为了确保用户只看到分配给他的文章,我编写了以下查询:- public IQueryable<Article> MyApproval() { Guid id = (Guid)Membership.GetUser().ProviderUserKey; return from article in db.Articles

我正在开发一个内容管理系统,其中我有一个控制器,显示分配给当前登录用户供其审阅的所有文章,然后用户可以批准或拒绝此文章。为了确保用户只看到分配给他的文章,我编写了以下查询:-

public IQueryable<Article> MyApproval() 
{ 
    Guid id = (Guid)Membership.GetUser().ProviderUserKey;   
    return from article in db.Articles  
           where article.Approval_ID == id  && article.Article_status_ID == 1  // 1 represents new articles in Article_status table 
           orderby article.Article_ID descending 
           select article; 
}
因此,我有以下三个问题:-

  • 控制器级别的检查是否会阻止用户修改URL和访问未分配给他的文章

  • 我是否也应该在编辑操作方法的发布版本上添加以下检查(作为GET版本的补充),或者它将被视为不必要的检查

    if (!articleapproval.Isapproval(User.Identity.Name)) 
        return View(“InvalidOwner”);
    
  • User.Identity.Name
    传递给helper方法更好的方法是什么(就像我目前正在做的那样)?或者修改helper方法以在其中生成
    User.Identity.Name
    ,如下所示

    public partial class Article
    {      
        public bool Isapprova ()
        { 
            return HostedBy.Equals(User.Identity.Name, StringComparison.OrdinalIgnoreCase);}
        }
    }
    
  • 控制器级别的检查是否会阻止用户修改 URL和访问一篇他没有被分配的文章

    我是否应该在编辑操作的发布版本上添加以下检查 方法(作为GET版本的补充),否则将考虑它 作为不必要的检查

    if (!articleapproval.Isapproval(User.Identity.Name)) 
        return View(“InvalidOwner”);
    
    你应该检查GET和POST

    将User.Identity.Name传递给helper方法(如下所示)更好的方法是什么 我现在正在做什么?或者修改helper方法以生成 其中的User.Identity.Name如下所示

    public partial class Article
    {      
        public bool Isapprova ()
        { 
            return HostedBy.Equals(User.Identity.Name, StringComparison.OrdinalIgnoreCase);}
        }
    }
    
    helper方法不需要知道如何检索当前用户名。您的实现很好