Обычно я занимаюсь безопасностью на уровне контроллера, а не на уровне данных. Если вы хотите обрабатывать это на уровне данных, я бы использовал инъекцию, чтобы дать вашему DAL либо текущего пользователя, либо средства для доступа к тому, кто является текущим пользователем. В этом случае это будет означать внедрение объекта User из контроллера при создании экземпляра DAL. Иногда я делаю это для аудита, то есть текущий пользователь может быть членом роли, которая дает доступ к изменению данных пользователя. В этом случае я хочу вставить фактического пользователя, вносящего изменения в таблицу аудита. Я бы не использовал HttpContext.Current - вы должны вместо этого использовать свойства на контроллере и внедрять их, а не заставлять DAL получать их из статического объекта. Это значительно упростит тестирование вашего DAL.
При обработке безопасности в контроллере вы можете использовать AuthorizeAttribute или пользовательские атрибуты, полученные из него, для реализации ваших сквозных проблем безопасности.