Я совершенно не уверен, как все это должно работать. Таким образом, у меня есть агрегат в моей доменной модели (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
атрибута для действий .. чтобы они работали как разрешения?