c# - 在 3 层设置中在哪里可以找到自定义成员资格、角色、配置文件提供程序?

标签 c# asp.net-mvc authentication asp.net-membership n-tier-architecture

我有一个 3 层 ASP.NET MVC 3 项目,它有一个数据层、一个服务层,然后是一个调用服务层以获取数据的表示层。我实际上在行动解决方案中使用了 doFactory 模式。

我想实现自定义成员资格、角色、个人资料提供者,但我不确定具体放在哪里。我想把它放在服务层,然后让提供者调用 DAO 对象来获取信息。

还有其他想法吗?

最佳答案

你的想法很好。虽然 UI 层与客户端交互并获取他们的密码,但您的服务层应该处理进入系统的尝试。

  • 您的操作方法将信息传递给负责授权的服务对象。

  • 您的服务层不知道它是否在 Web 应用程序中。

  • 数据层只是存储信息的地方,而不是处理信息的地方。

您可能会选择在 session 中将用户 ID 保留在 UI 层中。登录时,服务层将采用用户名/密码/任何内容并返回用户 ID。或者,您的操作方法可以每次将 session key 传递到服务层,以获取用户信息。

编辑 由于评论:我在我当前的项目中这样做(几百万美元的范围)。我在操作方法中有我的安全决定。 (当然,使这一切变得简单的工具是来自服务层的对象。)例如,如果当前用户没有这个角色或那个角色,则将他们重定向到拒绝页面,否则,执行此操作。 MyServiceLayerObject.DoThing() 内部没有安全措施。

对于我的应用和许多其他应用来说,这是最简单的方法。 (“最简单”意味着它会被搞砸的最少。当涉及到安全性时,简单就是好!)由于 Action 方法是功能的门户,在服务层具有安全性只会导致额外的工作,实际上 < em>模糊 发生了什么安全事件。现在,这就是我的应用,通常每个操作都在一个地方发生。

您的应用可能有所不同。使用服务层功能的不同操作方法和(尤其是)不同组件越多,您就越希望使用授权方案锁定服务层功能。许多人认为安全性应该始终在服务层,并且 UI 层中的任何额外安全操作都是额外的冗余。我不同意这一点。

关于c# - 在 3 层设置中在哪里可以找到自定义成员资格、角色、配置文件提供程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453783/

相关文章:

c# - 无法打开登录请求的数据库 "aspnetdb"。登录失败

asp.net-mvc - MVC 5注销超时

c# - 管理员必须重新加载页面才能看到管理功能(关于 cookie 位置的问题)

c# - 设置连接设置的最佳方法

c# - 自训练算法

c# - 测试一个类是否有一个属性?

c# - 在 Web 浏览器控件中调用 Javascript 测试单击

c# - Linq 如何加入并获取 2 个表的值

c# - 使用 MVC 的异步发布模型和负载响应

asp.net-mvc - 层次结构中的多个 AppSettings.config 文件