session跟cookie的记住登陆名

最近在做ASP.NET的项目时,接触到了登陆权限模块,所有总结了一下登陆时用到的知识和方法技巧。

如图说明:实现的效果如图,由于验证码验证比较简单这里就不介绍了

首先用代码生成器生成项目,以三层为例进行说明, 那么我以BlogUser表为例,然后就会有一个BlogUser实体类对象。

登陆的思想:当我们登陆成功的时候要将实体存入到session中,免登陆也是这个思想,只不过是当我们勾选免登陆的时候,第一次登陆进去,那么将用户的id存入到cookie中去,通过用户的id查找用户的实体,再赋值给session,那么session就不为空,就可以实现免登陆了。那么我们的BasePage又是什么呢?首先BasePage里面是其它页面的父类,只有通过登陆才能让用户去访问其它的页面,那么我们就用到PageBase类,然后在BasePage进行判断,如果Session为空,那么用户没登陆就跳转到登陆页面让用户登陆才能访问其它页面。

BlogUserBLL bll = new BlogUserBLL();
               //1.去数据库判断用户名和密码是否正确
                List<BlogUser> list = bll.GetModelList("LoginName=‘" + name + "‘ and LoginPwd=‘" + md5Pwd + "‘");
                //2.判断用户集合是否存在
                if(list.Count>0)
                {
                    //3.将用户信息保存到session中
                    Context.Session["uInfo"] = list[0];
                    //4.判断用户是否选中了记住登陆
                    if (!string.IsNullOrWhiteSpace(remember))
                    {
                        //5.记住了就将用户id存入cookie中
                        HttpCookie cookie = new HttpCookie(“uid”,list[0].Id.ToString());
                        cookie.Expires = DateTime.Now.AddDays(3);
                        Context.Response.Cookies.Add(cookie);
                    }
                    Response.Write("<script>alert(‘登陆成功‘);window.location=‘BlogList.aspx‘</script>");
                }
                else
                {
                    Response.Write("<script>alert(‘登陆失败,请重新登陆‘);window.location=‘/Login.aspx‘</script>");
                }
                Response.End();

第一:前台登陆的主要代码:

PageBase类,首先这个类要继承System.Web.UI.Page,其实这个类主要是重写了一个方法,这涉及到aspx页面的生命周期和一系列的管道事件,简单的来说吧,这相当于一个过滤器,当你请求其它页面(要登陆之后才能访问),那么它们都继承这个页面,会先在这个页面判断你是否有登陆,如果没有登陆,那么就跳转到登陆页面去。

protected override void OnInit(EventArgs e)
        {
            if (Session["uInfo"] == null)
            {
                //1.判断用户是否勾选记住三天免登陆
                if (Request.Cookies[“uid”] != null)
                {
                    BlogUserBLL bll = new BlogUserBLL();
                    //2.通过cookie里传人的数据得到数据实体
                    BlogUser umodel = bll.GetModel(int.Parse(Request.Cookies["uid"].Value));
                    //3.将实体存入session中
                    Session["uInfo"] = umodel;
                    return;
                }
               //4.跳转到登陆页面
                Response.Redirect("/Login.aspx");
            }
            base.OnInit(e);
        }

第二:PageBase类

注意:BasePage是针对于aspx页面的,那么ashx页面,我们又会有另外一个父类,是BaseHandler,原理差不多,写法还是有点区别。

时间: 2024-08-28 19:59:58

session跟cookie的记住登陆名的相关文章

利用session+application+cookie 实现单态登陆,且解决浏览器意外关闭的问题

最近在帮朋友做一个购物网站,里面涉及到了登陆的问题.其中包括后台管理员的登陆和用户的登陆. 在这个网站中,设计了后台管理员单态登陆,即一个账号只能有一个登陆实例.很容易想到的就是用application实现,在application中放置一个hashmap,储存登陆的管理员信息.同时为了实现登陆超时,也在session中存放登陆对象,通过设置session的listener监控session的消亡,移除application中的对象.那么问题来了,如果用户因为断电或者任性,非法关闭了浏览器,再打

cookie实现记住登录名和密码

在最近学习的session作用域中,顺便了解了一下cookie, session是存放在服务器中,而cookie是存放在客户端中. 本篇文章主要是使用cookie来实现记住密码的功能. 简单的login.jsp页面的代码: 在这里解释一下第二行的s标签,我是使用struts2框架做的.就简单的servelet和jsp可以实现同样的功能 login.jsp 1 <%@ page language="java" import="java.util.*" pageE

利用Session实现三天免登陆

什么是Session Session:在计算机中,尤其是在网络应用中,称为“会话控制”.(百度百科) Session:服务器端的数据存储技术. Session要解决什么问题 一个用户的不同请求(重定位到一个Servlet,这个Servlet需要用到上一个Servlet的request对象)的处理需要使用相同的数据怎么办呢? 解决:session技术 Session生命周期 当用户使用浏览器第一次向服务器发送请求的时候,服务器会调用相应的Servlet同时创建一个Session对象用于存储用户的某

登陆权限验证Session和Cookie用法及BasePage类使用

最近在做ASP.NET的项目时,接触到了登陆权限模块,所有总结了一下登陆时用到的知识和方法技巧. 如图说明:实现的效果如图,由于验证码验证比较简单这里就不介绍了 首先用代码生成器生成项目,以三层为例进行说明, 那么我以BlogUser表为例,然后就会有一个BlogUser实体类对象. 登陆的思想:当我们登陆成功的时候要将实体存入到session中,免登陆也是这个思想,只不过是当我们勾选免登陆的时候,第一次登陆进去,那么将用户的id存入到cookie中去,通过用户的id查找用户的实体,再赋值给se

通过js来设置cookie和读取cookie,实现登陆时记住密码的功能

function setCookie(){ //设置cookie var loginCode = $("#login_code").val(); //获取用户名信息 var pwd = $("#login_password").val(); //获取登陆密码信息 var checked = $("[name='checkbox']:checked");//获取“是否记住密码”复选框 if(checked && checked.le

多对多表的创建方式 forms组件 session与cookie

1.多对多表的创建方式 2.forms组件3.session 与 cookie 1.多对多表的创建方式 1.全自动(推荐使用*) class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_places=2) authors = models.ManyToManyField(to='Author') class Author(m

深入分析理解session与cookie的作用

session与cookie在web开发中我们用到的不少了,那么关于session与cookie你有深入理解吗?今天我们就一起来看一篇关于深入分析理解session与cookie的作用的例子. 在Web发展历史中,session与cookie都是伟大的存在,其初衷都是为了记住用户在网站上的浏览信息,如果没有其他替代品的出现,几乎所有web站点都离不开session与cookie. 为什么需要 Http协议是无状态的,也就导致服务器无法分辨是谁浏览了网页.为了维持用户在网站的状态,比如登陆.购物车

看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了

Cookie 和 Session HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录:Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性. Session 是什么 客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为 ConcurrentHashMap.Session 弥补了 HTTP 无状态特性,服务器可以利用 Session 存储客户端在同一个会

Session与Cookie间不得不说的一些事

在很久很久以前,刚有浏览器和网页的时候,web开发者发现了一个问题,我必须要在客户端这边保存一些东西才能实现某些功能,比如大家喜闻乐见的购物车.用户登录.自动登陆等.但是客户端只有一个浏览器,怎么在用户也就是客户端那边保存数据呢?于是大佬们一拍桌子,Cookie就诞生了! 我把Cookie理解为一个键-值形式存储再加上有效时间的一个容器,除此之外Cookie还有一个作用范围的概念(作用范围指的是域和路径,域的意思是根域名和端口,除非在设置cookie的时候特别指定域名),可以认为在同一个域里面的