您的位置:首页 > 编程语言 > ASP

使用Forms进行身份验证(Asp.net)

2014-02-12 12:01 579 查看
1、背景 以往项目登陆后的用户信息都是存放在session中,但session有一个问题就是读取的时候需要先实例化所在类,在调用对象()如果用static修饰,则可能到时多次登陆sessionid都一样,存在安全问题。目前的项目使用了FormsAuthentication方式存储登陆用户信息,使用的是Cookie存储方式。
2、代码介绍 2. 1 public class UserInfo:定义当前登陆用户需要存储的基本信息
2.2 登陆成功后将用户信息对象UserInfo序列化为json字符串存储
(系统会自动关联当前用户到HttpContext.Current.User.Identity.Name) var curUser = new UserInfo(); string name = JsonConvert.SerializeObject(curUser); FormsAuthentication.SetAuthCookie(name, false); 2.3 登陆用户信息的实体
对象(读取
HttpContext.Current.User.Identity.Name Json字符串并反序列化为UserInfo对象)
public class Runtime        {
/// <summary>
/// 当前登录用户相关信息
/// </summary>
public static UserInfo CurrentUser
{
get
{
if (HttpContext.Current.Request.IsAuthenticated)
{
SysUser longinUser = JsonConvert.DeserializeObject<UserInfo>(HttpContext.Current.User.Identity.Name);
if (string.IsNullOrEmpty(longinUser.LoginName))
{
return null;
}
else
{
return longinUser;
}
}
}
}
}
2.4 退出登陆 FormsAuthentication.SignOut();
3、优点和缺点 优点:使用static方法,读取方便;使用Forms验证,安全性有一定保障
缺点:
1、保存的基本信息不可过多,否则调用FormsAuthentication.SetAuthCookie方法时会抛异常(“无法加密身份验证票”) 2、Forms使用Cookie存放数据,存在一定的安全隐患

From WizNote
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: