我想知道如何实现成员资格提供程序类,以便能够记住登录的用户。
我有会员提供者类,我需要“记住我”功能复选框,但我不知道如何实现某些方法
答案 0 :(得分:2)
为了实现此功能,您必须在用户计算机上创建一个具有一些过期日期的持久性cookie。因此,如果用户选中记住我复选框,则会发出以下cookie:
var cookie = new HttpCookie("_some_cookie_name_", "username")
{
Expires = DateTime.Now.AddDays(15) // Remember user for 15 days
};
Response.Cookies.Add(cookie);
然后在显示登录屏幕时,您可以检查cookie是否存在并预填充用户名:
var cookie = Request.Cookies["_some_cookie_name_"];
if (cookie != null)
{
usernameTextBox.Text = cookie.Value;
}
答案 1 :(得分:0)
我会使用Hashtable,如果它在C#中,由用户ID键入。像这样的东西(其中lsdfjk只是用户ID对应的任何字符串,并假设有一个UserInfo类定义,构造函数将字符串userID作为参数):
string userID = "lsdfjk";
UserInfo userInfo = null;
Hashtable htMembers = new Hashtable();
if (htMembers.ContainsKey(userID))
{
userInfo = (UserInfo)htMembers[userID];
}
else
{
//It's a new member
userInfo = new UserInfo(userID);
}
答案 2 :(得分:0)
您可以使用RedirectFromLoginPage()方法自动执行此操作。
FormsAuthentication.RedirectFromLoginPage(username, true);
第二个参数“true”表示“设置持久性cookie”。用户将登录,直到cookie过期或他们清除他们的cookie。
如果您需要对其进行更多控制,可以通过直接操作cookie集合手动设置cookie。