首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用登录控制的asp.net跟踪会话中的配置文件变量?

使用登录控制的asp.net跟踪会话中的配置文件变量?
EN

Stack Overflow用户
提问于 2011-07-11 10:31:36
回答 3查看 1.7K关注 0票数 1

我一直在使用visual studio 2010在asp.net中制作一个带有购物车的网站。我的问题是关于配置文件变量和登录控制。

我按照一个非常简单的教程将购物车添加到我的站点。

1Shopping Cart Example

正如您在购物车教程中看到的,作者使用配置文件来跟踪购物车。

当我这样做的时候,我希望购物车在每个不同的用户登录时保持不变,因为我们使用的是配置文件而不是会话变量。幸运的是,当我使用登录控件以不同的用户身份登录时,购物车实际上会重置。

所以我的问题是,配置文件是如何跟踪每个用户的购物车的。我几乎可以肯定login-control没有设置会话变量,所以我不认为Profile对象会自动从login-control检测到不同的用户……是吗?

请帮我理解一下,作者不是很清楚。

非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-27 00:53:51

基本上,它的工作方式是使用身份验证信息来识别用户。因此,当请求来自经过身份验证的用户时,框架使用用户名(通常采用身份验证cookie的形式)将配置文件信息加载到当前请求中。

在您提供的示例中,因为作者使用的是<anonymousIdentification enabled="true"/>,它允许匿名用户也可以使用配置文件信息。

当匿名用户发出请求时,AnonymousIdentificationModule模块将创建一个GUID并将其写入名为.ASPXANONYMOUS的持久性cookie中。此GUID将用作ProfileProvider的用户名。

票数 6
EN

Stack Overflow用户

发布于 2011-07-27 00:49:46

将购物车和配置文件结合在一起的代码的重要部分在最后(在每次登录的幕后发生):

代码语言:javascript
复制
void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs e)
{
    ProfileCommon anonymousProfile = Profile.GetProfile(e.AnonymousID);
    if (anonymousProfile.SCart != null)
    {
        if (Profile.SCart == null)
            Profile.SCart = new ShoppingCartExample.Cart();

        Profile.SCart.Items.AddRange(anonymousProfile.SCart.Items);

        anonymousProfile.SCart = null;
    }

    ProfileManager.DeleteProfile(e.AnonymousID);
    AnonymousIdentificationModule.ClearAnonymousIdentifier();
}

你可以在MSDN上阅读配置文件等-例如:http://msdn.microsoft.com/en-us/library/ewfkf772.aspx

票数 2
EN

Stack Overflow用户

发布于 2011-08-02 05:51:07

对于会话来说,这并不完全正确。会话用于存储有关登录用户的某些信息。但是,有关已登录用户的信息(由asp:登录控件在成功登录后设置)也存储在一个主体中,您可以从HttpContext.Current.User对象访问该主体。另一个存储用户信息的位置是名为.ASPXAUTH cookie的cookie中。因此,有两个位置可以检索用户信息。但是Profile将依赖于IPrincipal类型的对象。至于匿名用户,Peter Mourfield给了你一个很好的答案,所以我不会重复他的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6645236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档