检查存储库模式中的CRUD操作的权限.Net

时间:2016-01-11 15:02:02

标签: c# .net attributes repository-pattern access-rights

大家下午好!我正在使用存储库模式来访问EDM,我想使用自定义属性AccessByRole开发某种权限检查:

public abstract class RepositoryBase: IRepository
{
    ...
    [AccessByRole]
    public virtual void Add(T entity)
    {
        ....
    }
    [AccessByRole]
    public virtual void Update(T entity)
    {
        ...
    }
    [AccessByRole]
    public virtual void Delete(T entity)
    {
        ...
    }        
    [AccessByRole]
    public virtual T GetById(long id)
    {
        ...
    }        
}

使用存储库(我正在使用Autofac for IoC):

public class Service
{
   private readonly IRepository repository;
   public Service(IRepository repository)
   {
       this.repository = reporitory;
   }
   ....
   public UpdateUserEntities(...)
   {
   ...
      reporitory.Update(T); // There is a need for check user rights before calling this method.
   }

}

在调用CRUD操作之前,有必要检查用户的权限。 所以我的问题是:属性源代码应该如何,所以在权限检查后调用CRUD操作?

1 个答案:

答案 0 :(得分:0)

嗯,最简单的方法是检查每个动作中的角色,如果未经授权,则进行短路。例如:

width: 100%;