Asp.net,在哪里存储登录用户的用户名?

Mar*_*tin 3 asp.net authentication session forms-authentication login

当用户登录我的asp.net站点时,我使用以下代码:

FormsAuthentication.RedirectFromLoginPage(userid, false);
Run Code Online (Sandbox Code Playgroud)

因为我经常需要使用userid,然后我可以通过以下方式获取用户ID:

string userid = System.Web.HttpContext.Current.User.Identity.Name;
Run Code Online (Sandbox Code Playgroud)

现在我还想在每个页面上显示登录的用户名,因此我的问题是,如果我需要在每个页面上使用它,我最好放置用户名.User.Identity.Name已由userid使用,因此我无法使用该ID.另一个解决方案是在每个页面上从数据库中获取用户名,但这似乎是一个糟糕的解决方案.

那么:使用Sessions存储用户名的最佳方式是什么?

Eri*_*sch 5

存储信息的方式基本上有6种,每种方式都有自己的优点和缺点.

  1. 类成员变量.这些只对一页刷新的生命有益.
  2. HttpContext变量.像类成员变量一样,只适用于一页刷新.
  3. ViewState,这些是从页面传递到页面以保持状态,但增加了下载数据的大小.此外,对于敏感信息不利,因为它可以被解码.
  4. 饼干.在每个页面请求发送.对敏感信息也不好,甚至加密.
  5. 会话.没有传递给最终用户,这对于敏感信息非常有用,但它增加了页面的资源使用,因此最大限度地减少繁忙站点的使用非常重要.
  6. 身份验证Cookie用户数据 - 这类似于Cookie,但可以使用身份验证数据进行解码,并用于创建实现所需身份信息的自定义IIdentity提供程序,例如名称或其他配置文件信息.但是,尺寸有限.