gpt4 book ai didi

c# - 决定用户类在应用程序中的位置

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:54 24 4
gpt4 key购买 nike

我不太确定这一切应该如何运作。所以我在我的领域模型中有一个聚合(Post->Feedbacks;Post->Category)。我一直在考虑 User 类的位置。我的第一个想法是使用状态模式实现User类:

interface IUserRole
{
// for example we got something like this:
Boolean CanPost { get; }
Boolean CanEdit { get; }
Boolean CanFlag { get; }

void AssignRole(IUserRole role, User user);
}

public sealed class AdministratorRole : IUserRole
{
public Boolean CanPost { get { return true; } }
public Boolean CanEdit { get { return true; } }
public Boolean CanFlag { get { return true; } }

public void AssignRole(IUserRole role, User user)
{
user.Role = role;
}
}
public sealed class NewMemberRole : IUserRole
{
public Boolean CanPost { get { return true; } }
public Boolean CanEdit { get { return false; } }
public Boolean CanFlag { get { return false; } }

public void AssignRole(IUserRole role, User user)
{
throw new NotSupportedException("text");
}

}

public class User // : Entity<User>
{
private IUserRole role;
public class User(String name, String pwd, IUserRole role)
{
// ...
this.role = role;
}

public Boolean CanPost { get { return this.role.CanPost; } }
public Boolean CanEdit { get { return this.role.CanEdit; } }
public Boolean CanFlag { get { return this.role.CanFlag; } }

public void AssignRole(IUserRole role, User)
{
this.role.AssignRole(role, user);
}

public String Name { get; set; }
public String Password { get; set; }
}

在那一步中,我一直在考虑将 User 包含到域模型中,然后通过 NHibernate DAL/DAO 使用它。

我已阅读有关 MembershipUserMembershipProvider 的内容。所有身份验证内容都在标准 ASP.NET MVC 模板中实现。

那么,如果我使用标准的membership/membership-user,领域逻辑会去哪里呢?然后,我是否应该通过在操作上设置 Authorize 属性来限制对 Post 实体的操作......以便它们作为权限工作?

最佳答案

是的,在 ASP.NET MVC 应用程序中,您可以授权/拒绝某些用户/角色的操作。它与项目中定义的成员资格提供商一起工作。

.NET 默认附带 2 个成员资格提供程序:一个用于 sqlserver,需要运行一些脚本,另一个基于 ActiveDirectory 成员资格。

您还可以创建自己的MembershipRole 提供商。这样您就可以为您的域对象/行为定制成员资格提供程序。

关于c# - 决定用户类在应用程序中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9125941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com