我试图避免使用传统的方法:
if(!user.HasPermission(Actions.UpdateRecord))
{
// code to update record
}
我的应用程序上的大量权限。
我正在寻找一种以有效和(如果可能)优雅方式检查权限的方法。 在这种情况下,每个权限中都有多个操作。
答案 0 :(得分:1)
如何在数据访问对象上放置装饰器。装饰器模式对于处理权限等操作非常有用。您的dataAccess图层可以只进行数据访问,然后使用仅处理权限和权限的内容来装饰这些类。
非常优雅......
答案 1 :(得分:0)
有很多方法可以做到这一点。重要的是,您希望封装检查权限的问题。一种方法是使用策略模式。将操作封装在类中,并通过工厂方法获取类。工厂可以进行安全检查,并为不允许的操作返回不同的策略。
例如:
public abstract class SecureAction
{
public void PerformAction();
}
public class UpdateRecords : SecureAction
{
public void PerformAction()
{
//code to do the update
}
}
public class DoesNotHavePermissionAction : SecureAction
{
public void PerformAction()
{
//code to handle missing permissions
}
}
public class SecureActionFactory
{
public void GetUpdateRecordsAction(User user)
{
if(user.HasPermissions(Actions.UpdateRecord)) {return new UpdateRecordsAction();}
return new DoesNotHavePermissionAction();
}
}