2

私はかなり確実でないアプリケーションでユーザクラスの場所を決めます。だから私は自分のドメインモデル( - ; Post - >Category>FeedbacksPost)で集計しています。そして私はUserクラスの場所について考えていました。私はNHibernateはDAL/DAOを通してそれを使用して、ドメインモデルに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クラスを実装することでした。

私は約MembershipUserMembershipProviderを読みました。すべての認証情報は標準のASP.NET MVCテンプレートで実装されています。

したがって、標準メンバーシップ/メンバーシップユーザーを使用すると、ドメインロジックはどこに行きますか?私は、..アクションにAuthorize属性を設定スルーPostエンティティ上での動作を制限しなければならないので、彼らは権限として動作しますか?

答えて

0

はい、ASP.NET MVCアプリケーションで、あなたはAUTHORIZE /アクションのいくつかユーザー/役割を否定する能力を持っています。 プロジェクトで定義されているメンバーシッププロバイダと連携します。実行するためのいくつかのスクリプト、およびActiveDirectoryのメンバーシップに基づいて別のもので、SQLServerのための1:

.NETは2つのメンバーシッププロバイダーとデフォルトで出荷されます。

また、独自のMembershipRoleプロバイダを作ることができます。この方法で、ドメインオブジェクト/動作用にカスタマイズされたメンバーシッププロバイダを取得します。

関連する問題