Определение места класса пользователя в приложении - PullRequest
2 голосов
/ 03 февраля 2012

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

1 Ответ

0 голосов
/ 03 февраля 2012

Да, в приложениях ASP.NET MVC у вас есть возможность авторизовать / отказать некоторых пользователей / ролей в действиях. Он работает с поставщиком членства, определенным в проекте.

.NET поставляется по умолчанию с двумя поставщиками членства: один для sqlserver, с некоторыми сценариями для запуска, а другой на основе членства ActiveDirectory.

Вы также можете создать собственных Membership и Role провайдеров. Таким образом, вы настроите поставщика членства для объектов / поведения вашего домена.

...