我不确定这一切应该如何运作。所以我的域模型中有一个聚合(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使用它。
我读过MembershipUser
和MembershipProvider
。所有身份验证都是在标准ASP.NET MVC
模板中实现的。
因此,如果我使用标准成员资格/成员资格用户域逻辑将在哪里?我是否应该限制对Post
实体的操作,通过设置Authorize
属性操作..所以它们将作为权限工作?
答案 0 :(得分:0)
是的,在ASP.NET MVC应用程序中,您可以对操作授权/拒绝某些用户/角色。 它适用于项目中定义的成员资格提供程序。
默认情况下,.NET提供了2个成员资格提供程序:一个用于sqlserver,一些脚本可以运行,另一个基于ActiveDirectory成员资格。
您还可以创建自己的Membership
和Role
提供商。这样,您就可以根据域对象/行为自定义成员资格提供程序。