当前位置: 首页 > news >正文

asp.net下使用Cookie保存登录信息

在网页中登录窗口是最常见的,如果把登录信息存在客户机Cookie中,下次用户登录时,网页先在客户机上查找登录信息,如果成功即可跳过登录步骤直接到主窗口,如登录界面如下:

 

实现:

1、第一次登录时保存到Cookie中,我使用的是ActionResult:

 public ActionResult Login(User user)
        {
            if (string.IsNullOrEmpty(user.Name) || string.IsNullOrEmpty(user.Pwd))
            {
                return Content("no:请输入完整,不能为空!");
            }
            User dbuser = dao.GetUserByName(user);

            if (dbuser == null)
            {
                return Content("no:用户名错误!");
            }
            if (dbuser.Pwd != user.Pwd)
            {
                return Content("no:密码错误!");
            }
            var record = Request["ckbrecord"].ToBoolean();
            SetCookie(record,user);
            Session["userinfo"] = dbuser;
            return Content("ok:"+dbuser.Rank);
        }
 //设置cookie;
       private void SetCookie(bool record, User user)
        {
            if (record)
            {
                HttpCookie cookiename = new HttpCookie("printName", DES.MD5Encrypt(HttpUtility.UrlEncode(user.Name)));
                cookiename.Expires = DateTime.MaxValue;
                Response.Cookies.Add(cookiename);
                HttpCookie cookiepwd = new HttpCookie("printPwd", DES.MD5Encrypt(HttpUtility.UrlEncode(user.Pwd)));
                cookiepwd.Expires = DateTime.MaxValue;
                Response.Cookies.Add(cookiepwd);
            }
            else
            {
                HttpCookie cookiepwd = Request.Cookies["printPwd"];
                if (cookiepwd != null)
                {
                    cookiepwd.Expires = DateTime.Now.AddHours(-1);
                    Response.Cookies.Add(cookiepwd);
                }
            }
        }

2、登录界面前检查Cookie,把下面判断放在首页Action中

//cookie登录
        private User CookieLogin()
        {
            HttpCookie printName = Request.Cookies["printName"];
            HttpCookie printPwd = Request.Cookies["printPwd"];

            User user = new User();
            if (printName != null && printPwd != null)
            {
                user.Name =HttpUtility.UrlDecode(DES.MD5Decrypt(printName.Value));
                user.Pwd = HttpUtility.UrlDecode(DES.MD5Decrypt(printPwd.Value));
            }
            return user;
        }

 HttpUtility.UrlDecode和HttpUtility.UrlEncode是处理中文乱码问题用的。

转载于:https://www.cnblogs.com/lunawzh/p/4497889.html

相关文章:

  • SQLServer插入数据
  • Sql Xml
  • Notepad++的语法高亮
  • 电脑安装打印机设备搜索不到解决记录
  • JMX详解
  • Spring Security 基于表达式的权限控制
  • Storm 0.9 集群搭建
  • vs2017使用rdlc实现批量打印
  • Click Magick – 下一代点击跟踪和链接管理
  • GitHub推出更多课程
  • HTML/CSS实现的一个列表页
  • python引用局部变量之nonlocal
  • OpenWrt backfire trunk源码下载及编译
  • CentOS 7上安装gitlab-runner
  • sql server实战
  • 《深入 React 技术栈》
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • django开发-定时任务的使用
  • Flannel解读
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • java 多线程基础, 我觉得还是有必要看看的
  • js中的正则表达式入门
  • Lucene解析 - 基本概念
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python_OOP
  • React中的“虫洞”——Context
  • spark本地环境的搭建到运行第一个spark程序
  • SpringBoot 实战 (三) | 配置文件详解
  • Sublime Text 2/3 绑定Eclipse快捷键
  • windows下如何用phpstorm同步测试服务器
  • 机器学习学习笔记一
  • 前端之React实战:创建跨平台的项目架构
  • 三分钟教你同步 Visual Studio Code 设置
  • 收藏好这篇,别再只说“数据劫持”了
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 走向全栈之MongoDB的使用
  • ​MySQL主从复制一致性检测
  • ###C语言程序设计-----C语言学习(3)#
  • #Lua:Lua调用C++生成的DLL库
  • #微信小程序(布局、渲染层基础知识)
  • $forceUpdate()函数
  • (23)Linux的软硬连接
  • (4)STL算法之比较
  • (java)关于Thread的挂起和恢复
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot学生选课系统 毕业设计 612555
  • .apk文件,IIS不支持下载解决
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .Net Redis的秒杀Dome和异步执行
  • .Net的DataSet直接与SQL2005交互