【问题标题】:Doubt about how render views and call services for different authenticated person in MVC Web Application关于如何在 MVC Web 应用程序中为不同的身份验证人员呈现视图和调用服务的疑问
【发布时间】:2011-08-02 11:00:10
【问题描述】:

我有一个疑问,需要您的帮助。 我正在为大学做一个项目,但我遇到了以下问题。

我的项目旨在管理特定项目的问题。在项目中通常与成员(解决问题)和客户相关联 报告此问题。

我的问题从这里开始:

该应用程序是一个网络应用程序,并使用管理员、会员和客户的登录机制。 客户报告,会员决定。

所以我看到以下内容: 客户的表格,是添加、更新和允许问题的所有信息。 另一方面,成员会根据其解决方案更改问题的状态。

我正在做一个 Web 应用程序 MvC3 我的问题是.. 如何根据经过身份验证的人呈现不同的视图 以及不同业务层的调用服务。

目前,我的控制器扮演的角色是通过角色验证用户是否具有访问权限,但仅此而已.. 验证身份的是业务层。 如何以及在何处做出该决定,以及如何避免 if 和 else 在整个代码中传播?

【问题讨论】:

  • 我想我理解您对控制器的看法,但您能否提供一些代码以便我们更好地帮助您?

标签: asp.net-mvc-3 authentication views profile


【解决方案1】:
public interface IQueryService {
...
#region Issues


IEnumerable<IssueQueryList> GetIssues(int currentPage, int take);



IssueServiceClientDTO GetIssueById(int issueId);

#endregion
...

}

我最终将拥有 GetIssueByIdMember(...),它为具有不同 DTO 数据的成员返回问题。

public sealed class IssueService : ServiceBase, IIssueService
{
    public IssueService(IRepository db) : base(db) 
    {

    }


    public void Add(IssueServiceClientDTO issueServiceClient)
    {
        if (issueServiceClient == null)
            throw new ArgumentNullException("issueServiceClient");

        User dbUser = CurrentUser;
        Client dbClient;

        if (dbUser == null || (dbClient = dbUser as Client) == null)
            throw new InvalidOperationException();

        Project dbProject = _db.Query<Project>().GetById(issueServiceClient.ProjectId);
        _db.Insert(issueServiceClient.CopyToDomainObject(dbProject, dbClient));


    }

这仅适用于客户端......但是当我有表示层的成员(在另一个类中)时,或者从某个地方我最终需要知道要调用哪个服务......

这是查询服务,但我也会为客户和会员提供服务。

但我需要知道之前(基于经过身份验证的用户)调用哪个方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 2020-01-25
    • 2020-04-23
    • 2011-02-12
    • 1970-01-01
    • 2017-10-29
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多