关于用户登录后的信息存储方式的讨论,前有古人,后也会有来者。(我就不捣乱了~~)
一般有以下三种方式做为选择:
一、存储到 Session 中;
二、存储到 Cookie 中;
三、存储到 数据库 中。
本系统在每个用户登录系统后,先将用户信息序列化,然后再存储到 Cookie 中。
附代码:
用户信息类 UserInfo
using System;
/**//***************************************
******** 里奥特在线邮件收发系统 *****
***************************************/
namespace Lyout.WebMail {
/**//// <summary>
/// 用户信息
/// </summary>
[Serializable]
public class UserInfo {
private DateTime loginDate;
private int userID;
private string username;
private string nickname;
private int roleID = 0;
public UserInfo() {
}
public UserInfo(int userID) {
this.userID = userID;
this.username = string.Empty;
this.nickname = string.Empty;
this.loginDate = DateTime.Now;
}
public UserInfo(int userID, string username) {
this.userID = userID;
this.username = username;
this.nickname = username;
this.loginDate = DateTime.Now;
}
public UserInfo(int userID, string username, string nickname) : this(userID, username) {
this.nickname = nickname;
}
public UserInfo(int userID, string username, DateTime loginDate) {
this.userID = userID;
this.username = username;
this.nickname = username;
this.loginDate = loginDate;
}
public UserInfo(int userID, string username, string nickname, DateTime loginDate) : this(userID, username, loginDate) {
this.nickname = nickname;
}
/**//// <summary>
/// 登录日期
/// </summary>
public DateTime LoginDate {
get {
return this.loginDate;
}
set {
this.loginDate = value;
}
}
/**//// <summary>
/// 用户ID
/// </summary>
public int UserID {
get {
return this.userID;
}
set {
this.userID = value;
}
}
/**//// <summary>
/// 登录名
/// </summary>
public string UserName {
get {
return this.username;
}
set {
this.username = value;
}
}
/**//// <summary>
/// 呢称
/// </summary>
public string NickName {
get {
return this.nickname;
}
set {
this.nickname = value;
}
}
/**//// <summary>
/// 角色ID
/// </summary>
public int RoleID {
get {
return roleID;
}
set {
roleID = value;
}
}
}
}
using System;
/**//***************************************
******** 里奥特在线邮件收发系统 *****
***************************************/
namespace Lyout.WebMail {
/**//// <summary>
/// 用户信息
/// </summary>
[Serializable]
public class UserInfo {
private DateTime loginDate;
private int userID;
private string username;
private string nickname;
private int roleID = 0;
public UserInfo() {
}
public UserInfo(int userID) {
this.userID = userID;
this.username = string.Empty;
this.nickname = string.Empty;
this.loginDate = DateTime.Now;
}
public UserInfo(int userID, string username) {
this.userID = userID;
this.username = username;
this.nickname = username;
this.loginDate = DateTime.Now;
}
public UserInfo(int userID, string username, string nickname) : this(userID, username) {
this.nickname = nickname;
}
public UserInfo(int userID, string username, DateTime loginDate) {
this.userID = userID;
this.username = username;
this.nickname = username;
this.loginDate = loginDate;
}
public UserInfo(int userID, string username, string nickname, DateTime loginDate) : this(userID, username, loginDate) {
this.nickname = nickname;
}
/**//// <summary>
/// 登录日期
/// </summary>
public DateTime LoginDate {
get {
return this.loginDate;
}
set {
this.loginDate = value;
}
}
/**//// <summary>
/// 用户ID
/// </summary>
public int UserID {
get {
return this.userID;
}
set {
this.userID = value;
}
}
/**//// <summary>
/// 登录名
/// </summary>
public string UserName {
get {
return this.username;
}
set {
this.username = value;
}
}
/**//// <summary>
/// 呢称
/// </summary>
public string NickName {
get {
return this.nickname;
}
set {
this.nickname = value;
}
}
/**//// <summary>
/// 角色ID
/// </summary>
public int RoleID {
get {
return roleID;
}
set {
roleID = value;
}
}
}
}
用户信息操作类 UserHelper
using System;
using System.Web.SessionState;
using System.Web;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
/**//***************************************
******** 里奥特在线邮件收发系统 *****
***************************************/
namespace Lyout.WebMail {
/**//// <summary>
/// 用户信息操作
/// </summary>
public class UserHelper {
private static readonly string UserIDKey = "UCO_USERIDKEY";
/**//// <summary>
/// 删除
/// </summary>
/// <param name="cookies"></param>
public static void Delete(HttpCookieCollection cookies) {
cookies.Remove(UserIDKey);
}
/**//// <summary>
/// 从缓存中取出用户数据
/// </summary>
/// <param name="cookies"></param>
/// <returns></returns>
public static UserInfo GetUserInfo(HttpCookieCollection cookies) {
if (cookies[UserIDKey] != null) {
string cookiedata = cookies[UserIDKey].Value;
if (!string.IsNullOrEmpty(cookiedata)) {
// 反序列化用户信息
string userData = HttpContext.Current.Server.UrlDecode(cookiedata);
byte[] bt = Convert.FromBase64String(userData);
using (Stream smNew = new MemoryStream(bt)) {
IFormatter fmNew = new BinaryFormatter();
return (UserInfo)fmNew.Deserialize(smNew);
}
}
}
return null;
}
using System;
using System.Web.SessionState;
using System.Web;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
/**//***************************************
******** 里奥特在线邮件收发系统 *****
***************************************/
namespace Lyout.WebMail {
/**//// <summary>
/// 用户信息操作
/// </summary>
public class UserHelper {
private static readonly string UserIDKey = "UCO_USERIDKEY";
/**//// <summary>
/// 删除
/// </summary>
/// <param name="cookies"></param>
public static void Delete(HttpCookieCollection cookies) {
cookies.Remove(UserIDKey);
}
/**//// <summary>
/// 从缓存中取出用户数据
/// </summary>
/// <param name="cookies"></param>
/// <returns></returns>
public static UserInfo GetUserInfo(HttpCookieCollection cookies) {
if (cookies[UserIDKey] != null) {
string cookiedata = cookies[UserIDKey].Value;
if (!string.IsNullOrEmpty(cookiedata)) {
// 反序列化用户信息
string userData = HttpContext.Current.Server.UrlDecode(cookiedata);
byte[] bt = Convert.FromBase64String(userData);
using (Stream smNew = new MemoryStream(bt)) {
IFormatter fmNew = new BinaryFormatter();
return (UserInfo)fmNew.Deserialize(smNew);
}
}
}
return null;
}