CrossCutting中的UserContext

时间:2015-12-21 08:33:29

标签: c# entity-framework

我正在一个项目中工作,我们在CrossCutting中有一个名为IUserContext的界面,用于装饰我们域中的用户实体。

IUserContext表示当前登录的用户。

首先: IUserContext是否属于CrossCutting?

User实体看起来像这样:

public sealed class User : Entity, IUserContext
{
    public ICollection<Permission> Permissions { get; set; }
}

这样做是因为他们想在任何需要的地方注入IUserContext

确定!

现在我有创建权限服务的任务。在此服务中,我还需要注入IUserContext,因此我可以检查当前登录用户的权限。我的想法:

    private readonly IUserContext _userContext;

    public PermissionService(IUserContext userContext)
    {
        _userContext = userContext;
    }

    public bool HasPermission(string permission)
    {
        return _userContext.Permissions.Any(x => x.Name == permission);
    }

问题:用户实体有ICollection<Permission>,其中权限是一个实体本身,我无法为IUserContext ICollection<Permission>属性创建因为IUserContext CrossCutting不了解包含实体权限的域,这是正确的。

从CrossCutting中删除a并将其放入域中的正确方法是什么?如果是这样,我还需要在域不可见的其他层(例如UI层)中将当前用户登录?

0 个答案:

没有答案