ASP.NET MVC:普通/管理员用户的关注点分离

VSB

我将把ASP.NET MVC 5.2项目的管理员和普通用户部分分开。我的管理区域和普通用户区域共享很多东西,但是它们各自的特权和详细信息是不同的。

现在,我不知道如何分隔管理区域和普通用户区域。我不知道是否应该为admin-panel创建不同的项目,还是只应该将admin路由到不同的路径并使用相同的控制器?还是应该路由到不同的路径并使用不同的视图/控制器?

另一个问题是,是否可能在同一ASP.Net MVC解决方案中将实际的管理员区和普通用户区分开?

皇家Bg

通常,在应用程序中,有使用相同业务逻辑的各种端点。在这种情况下我们应该怎么做?我们可以轻松地复制一个端点并将其粘贴到另一个端点,但是一旦业务案例改变了,我们就需要在代码中的任何地方进行改变。

为了分离关注点,控制器应具有“代码”逻辑,而另一层应具有“业务”逻辑。例如,控制器可以定义属性的命名方式,但不能定义用户名的长度。无论哪个控制器尝试注册用户,用户名都应至少为3个字符。

具有实体模型的所有满足业务用例需求的操作都应移到单独的层。通常称为服务层。

您的所有控制器都可以使用任何服务,而无需从后面的业务场景中了解到。

一个简单的示例是两个控制器动作-一个-编辑您自己的配置文件,另一个-管理员编辑任意用户的配置文件。

[Authorize]
public IActionResult Edit(UserViewModel model) {
    if(model.Id != this.CurrentlyLoggedUser.Id) { 
        return this.RedirectToAction(...);
    }

    var userService = new UserService(); // inject maybe
    userService.EditById(model.Id, model);

    return this.View();
}

和管理员动作

[Authorize("Admin")]
public IActionResult Edit(UserViewModel model) {
    var userService = new UserService(); // inject maybe
    userService.EditById(model.Id, model);

    return this.View();
}

这里的“代码”逻辑是-创建服务,调用封装的编辑逻辑。另外,出于安全考虑,该操作应注意-AuthorizeAuthorize Admin

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用实体框架7和asp.net 5保持关注点分离

来自分类Dev

ASP.NET MVC实体管理员CRUD

来自分类Dev

我们在哪里处理ASP.NET WebAPI中的错误并维护精简控制器和关注点分离?

来自分类Dev

ASP.Net MVC: elmah.axd 只能由管理员角色访问

来自分类Dev

选择除管理员之外的所有角色。C# ASP.NET MVC

来自分类Dev

Asp.Net Core检查管理员密码

来自分类Dev

如何从ASP.NET MVC 5(身份)中的另一个(管理员角色)帐户创建新的用户帐户

来自分类Dev

如何在asp.net空Webform项目中按管理员查看所有用户?

来自分类Dev

使用ASP.NET MVC 4的用户管理

来自分类Dev

实现管理员登录ASP .Net Web应用程序

来自分类Dev

管理员如何在ASP.NET Core中更改SQL Server中的数据?

来自分类Dev

如何使用来自 SQL Server 的登录名根据 asp.net 上的客户/管理员角色重定向用户

来自分类Dev

ASP.NET MVC入口点

来自分类Dev

ASP.NET MVC入口点

来自分类Dev

LinqToTwitter用户授权ASP.NET MVC

来自分类Dev

ASP.NET MVC找不到用户

来自分类Dev

注销指定用户asp.net mvc

来自分类Dev

Asp.net MVC和用户

来自分类Dev

ASP.NET MVC找不到用户

来自分类Dev

LinqToTwitter用户授权ASP.NET MVC

来自分类Dev

ASP.NET MVC 用户使用

来自分类Dev

ASP.NET用户模拟

来自分类Dev

ASP.NET用户验证

来自分类Dev

为什么在我只允许管理员访问权限后,我在管理员组中的帐户无法访问asp.net页

来自分类Dev

Model Validation in asp .net MVC

来自分类Dev

ASP.NET MVC,Actionlink

来自分类Dev

ASP.net MVC路由

来自分类Dev

Asp.net Mvc身份

来自分类Dev

ASP.NET MVC入门