【问题标题】:Creating second ASP.NET MVC authentication cookie创建第二个 ASP.NET MVC 身份验证 cookie
【发布时间】:2015-07-22 06:28:31
【问题描述】:

我正在一个 ASP.NET MVC 5 应用程序中工作,我需要两个级别的安全性。 用户登录系统,然后,他们可以选择“登录”到第二个子系统(假设是公司分支机构),从公司分支机构列表中选择一个公司分支机构。这种情况类似于拥有一个包含一些存储库的 GitHub 帐户。首先,您登录 GitHub,然后选择要使用的存储库。 我不想将分支 id/name 作为 url 参数传递,我想创建一个 cookie 来存储分支基本数据,例如 id 和 name。 我正在使用公司分支数据创建一个 cookie(使用 HttpCookie)。我的问题是创建(和加密)第二个 cookie 以识别所选公司分支机构的最佳方法是什么?

【问题讨论】:

  • 在 GitHub 上,您不会“登录”到存储库。您只需选择它,然后您就会被带到正确的 URL 以查看该页面。你为什么不这样配置你的路由呢?我会为此避免使用cookie。这使得共享指向一致页面的链接变得困难。
  • 我参考了 GitHub 作为例子。我不想为每个请求查询我的数据库以获取公司分支机构名称和其他基本公司分支机构数据(来自公司分支机构 ID/名称等路由参数)。公司分支机构数据用于实现授权,因此我更喜欢在“缓存”中(到目前为止在 cookie 中)有一些公司分支机构数据来查询我的数据库以获取它。
  • 这没有意义。用户可以轻松地操纵 cookie。无论如何,您的服务器都必须确定请求的授权。一个小的身份验证检查数据库查询应该非常简单和快速。如果不是,那么您可以将结果缓存在服务器内存中。

标签: c# asp.net asp.net-mvc cookies forms-authentication


【解决方案1】:

使用角色来管理对不同分支的访问。如果用户一开始没有访问权限,下拉列表甚至不应该显示分支,并且分支页面的控制器操作应该用[Authorize] 属性装饰。然后,如果您在 URL 中留下分支 ID 或任何内容,那就没问题了。如果未经授权的用户无论如何更改它,他们将无法查看它。 http://www.asp.net/web-pages/overview/security/16-adding-security-and-membership

【讨论】:

  • 我已经有了一个包含成员资格和角色提供者的安全机制。我正在使用欧文。问题不在于其他。授权已在所有动作和控制器中实施。我正在寻找一种保存额外数据的好方法,例如用户选择的公司分支机构。我不想在每个请求中查询我的数据库以获取公司分支机构名称和其他基本公司分支机构数据。
  • 然后对这些类型的值使用 ASP.NET 会话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 2013-09-06
  • 1970-01-01
  • 2011-02-28
  • 1970-01-01
相关资源
最近更新 更多