我正在使用vs2010在asp.net中开发一个应用程序。
在应用程序中,管理员可以使用Microsoft成员注册向导创建不同的用户帐户。 用户可以使用Microsoft登录控件登录创建的凭据。
现在,我必须以整个应用程序的不同形式访问此Logedin用户的UserID和UserName。
目前,我正在通过
编写所有表格的代码来访问此详细信息MembershipUser newUser = Membership.GetUser();
Guid newUserId = (Guid)newUser.ProviderUserKey;
那么,我可以在哪里将此登录用户的UserID和UserName存储在一个公共位置。所以我可以从普通地方访问这些细节吗?
请帮助我。
谢谢,
答案 0 :(得分:0)
嗯 - 这完全取决于您为应用程序保留数据的位置。
如果您使用数据库进行存储,那么逻辑上数据应该属于用户表中的数据,并且应用程序配置中的数据库具有连接字符串。
如果不使用数据库,那么您需要一些基于文件的存储,例如XML或您自己创建的东西,然后使用解析器对文件中的数据进行序列化/反序列化。
在这两种情况下,您都需要考虑安全性和散列/ salting,并确保数据安全。
答案 1 :(得分:0)
我倾向于使用静态助手类,它在任何请求的持续时间内存储(并加载)HttpContext.Items中的数据。所以你只需要为每个请求调用一次GetUser。如果这对你来说太过分了,你可以使用一个Session,但是不要忘记会话只能存活很长时间,所以如果数据由于会话超时而丢失,请准备好重新加载数据。
静态类必须可以从整个应用程序访问 - 在网站项目中,这意味着App_Code文件夹。