【问题标题】:ASP.Net Membership Cookies?ASP.Net 会员 Cookie?
【发布时间】:2012-01-29 09:48:25
【问题描述】:

我想知道Membership中cookie背后的想法是什么,调用了一个方法:

Membership.GetUser();

此方法返回所有用户信息,此方法不访问数据库,但访问存储在我的电脑上的 cookie,我想知道这个 cookie 是如何存储的,以及如何访问和操作这个 cookie。

这是我的问题:

我有一个要集成到我的网站的论坛,论坛用户会员资格,而我的网站没有,我的网站使用简单的用户名密码表。我已经更改了一些与会员登录相关的程序,但当我进入论坛时,它仍然将我记录为管理员,因为我在更改数据库中的任何内容之前使用它,我已经跟踪了 cookie,我发现只有 6 个没有子键的 cookie ,但是当调用上述方法时,它会获取所有信息。我想知道他们是从哪里来的。

编辑: 我错了,它确实访问了数据库,我现在的问题是我可以覆盖 Memberships 中的 getuser 方法并为其分配另一个过程

【问题讨论】:

  • 会员提供者有一个完整的API来操作会员。为什么要操纵 cookie? (即帮助我们解决您的问题,而不是您最初尝试的解决方案。请参阅 XY Problem。)

标签: c# asp.net asp.net-membership


【解决方案1】:

不正确。 Membership.GetUser() 实际上确实访问了数据库。它从成员表中提取数据。此数据不存储在 cookie 中。 cookie 中存储的唯一内容是用户的用户名和身份验证票。

编辑:

根据您的更新,您需要实现一个自定义成员资格提供程序来处理您的身份验证。如果论坛用户是会员,那么你别无选择,否则你将不得不重写论坛。

您似乎对数据库中没有成员表这一事实感到困惑。这很可能是因为成员资格连接字符串指向的数据库与您用于数据的数据库不同。这通常会为您自动生成并存储在项目文件夹的 App_Data 文件夹下。

编辑2:

根据您的额外编辑,是的。你想做什么,就可以做什么。但是您需要实现一个自定义的 Membership 提供程序。

http://msdn.microsoft.com/en-us/library/ie/f1kyba5e.aspx

【讨论】:

  • 你完全正确,你能回答我上面的问题吗?谢谢。
  • 另外:自定义成员资格提供者可能(主要)是现有成员的薄包装。您不需要完全绿色的字段实现来在一个地方添加一点逻辑(前提是您确保更改与您只是重用的方法的操作不一致)。
【解决方案2】:

http://forums.asp.net/t/1647173.aspx

如果它们是单独的应用程序,您可以通过确保两个应用程序使用相同的应用程序池来让它们共享会话

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2012-08-12
    相关资源
    最近更新 更多