使用FORM认证登录后,调用会员的常用基本信息,我现在是这样做的,不知道会不会引起串号,行不行的通,如果不行,大家都是用的什么方式?
分不多,新手请大家指点,谢谢!
public class MyUser
{
//先获取登陆用户名
private static string userid()
{
string userid;
IPrincipal p = HttpContext.Current.User;
userid = p.Identity.Name.ToString();
return userid;
}
//获取登陆用户对应的会员名称
private static string username()
{
string Name;
if (HttpContext.Current.Session["Name"] != null)
Name = HttpContext.Current.Session["Name"].ToString();
else
{
string id = userid();
SqlServerDataBase db = new SqlServerDataBase();
Name = Convert.ToString(db.GetTier("select Users_Qtname from Fs_Users where Users_id='" + id + "'", null));//获取会员名称
HttpContext.Current.Session["Name"] = Name;//储存到Session中
}
return Name;
}
//声明一个属性,全部调用
/// <summary>
/// 会员名
/// </summary>
public static string UserName
{
get
{
return username();
}
}
}
//全站调用
MyUser.UserName
------解决思路----------------------
不是可以放到Session里么
------解决思路----------------------
如果你担心什么问题,就写出测试程序来反复运行几百遍(包括并发运行),然后用你自己的测试结果再来问问题。
不要写点代码就问别人“是不是这样写啊?”。
------解决思路----------------------
放到Session里之后,唯一的问题是Session可能会丢失(一般默认是20分钟),那么你需要判断Session为null的时候,重新从数据库里读取信息
因为你是Form验证,根本没有登陆窗体,也不需要登陆
如果是匿名验证,自己做登陆窗体,那么当Session丢失的时候,应该跳转回登陆窗体要求重新填写用户名密码