session cookie 验证码实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Blog.UI
{
    using System.Drawing;
    using Blog.Common;
    /// <summary>
    /// Vcode 的摘要说明
    /// </summary>
    public class Vcode : IHttpHandler,System.Web.SessionState.IRequiresSessionState
    {
        Random r = new Random();
        public void ProcessRequest(HttpContext context)
        {
            //准备一张画布
            using (Image img = new Bitmap(60, 25))
            {

                //准备一个画家
                Graphics g = Graphics.FromImage(img);
                //背景画白
                g.Clear(Color.White);
                //画边框
                g.DrawRectangle(Pens.Red, 0, 0, img.Width - 1, img.Height - 1);
                //画噪点线
                DrawPoints(g, img, 10);
                //得到验证码字符串
                string vcodestr = Getstring(1);
                //画字符串
                g.DrawString(vcodestr, new Font("微软雅黑", 16, FontStyle.Italic | FontStyle.Strikeout), Brushes.Blue, 0, 0);
                DrawPoints(g, img, 10);
                //将图片以jpg格式显示在outputstream流
                img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                //存进session
                context.Session[CommonHelper.Vcode] = vcodestr;
            }
        }
        void DrawPoints(Graphics g,Image img,int n)
        {
            for (int i = 0; i < n; i++)
            {
                int x = r.Next(0, img.Width);
                int y = r.Next(0, img.Height);
                g.DrawLine(Pens.Blue, x, y, x + r.Next(2, img.Width), y + r.Next(2, img.Width));
            }

        }
        string Getstring(int n)
        {
            string s = string.Empty;

            char[] c = new char[] { ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘a‘, ‘b‘, ‘c‘,‘d‘ };
            for (int i = 0; i < n; i++)
            {
               s+=c[ r.Next(c.Length)];
            }
            return s;
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

//加cookie,键值对
HttpCookie cookie = new HttpCookie("name", name);
//expires获取或者设置cookie过期时间,使其变成硬盘cookie

,不加该属性,cookie就是缓存中关闭浏览器就over
cookie.Expires = DateTime.Now.AddMinutes(5);
//将cookie交给浏览器。老中医将病例本交给病人。
Response.Cookies.Add(cookie);
//当跳转之后,也就是再来看病,会带着cookie过来,从
//request.cookies[""] 取出来

session 滑动过期机制20分钟
当session创建时候,实际是系统自动将session的key生成了一个不会重复

的字符串,放进cookie中,发给了浏览器的缓存。这个cookie的key是固定
ASP.NET_SessionId,value就是session的key。可以考虑模拟拿到session

的key研究破解,或者绕过登陆。
session可以放任意类型,cookie只能放文本
session也是键值对,key是一个不重复随机字符串,value里又是键值对存

放用户信息。
session.abandon()//销毁服务器端的session对象(退出)
session.clear()//清空服务器端的session对象里的键值对,session对象没

有从session池里销毁

时间: 2024-10-15 17:42:00

session cookie 验证码实现的相关文章

JavaWeb学习之转发和重定向、会话技术:cookie、session、验证码实例、URLConnection使用(下载网页)(4)

1.转发和重定向 HttpServletResponse response 转发: RequestDispatcher dispatcher = request.getRequestDispatcher("/secondServlet"); request.setAttribute("pwd","123");//这里设置的值在secondServlet中可以获取到 dispatcher.forward(request, response);//调

JavaWeb快速入门Session&amp;Cookie代码思路篇(七)

Cookie练习 简介 尝试了n种分享代码,最终没有找到好办法.我觉得贴代码,很难看下去.还不如写思路,今后代码篇改成思路篇 Session代码练习 1. 购物车思路 1. ListBookServlet类 1.1 显示该网站所有商品,每个商品加上购买链接(BuyServlet) 用Map集合存储Book对象 map.put("1", new Book("1","JavaWeb开发","老张","一本好书"

爬虫 Connection 代理 cookie 验证码

爬取网页遇到问题: http://sc.chinaz.com/jianli/free.html爬取简历模板 HTTPConnectionPool(host:XX)Max retries exceeded with url. 原因: 1当你在短时间内发起高频请求时,http 的连接池中的连接资源被耗尽 Connection:keep-alive 2 IP 被封 解决方法: 1 请求headers 中添加: Connection:'close' 2换ip 数据解析 目的:实现聚焦爬虫!!! 数据解析

认证 协议 JWT OAuth Session Cookie

本文翻译自Auth-Boss. 如果有翻译的不恰当或不对的地方, 欢迎指出. 成为一个认证老司机, 了解网络上不同的身份认证方法. 本文档的目的是记录和编目Web上的身份验证方法.认证指的是创建一个系统的过程,用户可以通过该系统"登录"在线服务,并授予对受保护资源的访问权限.以下引用可能更好地总结我想要解释的内容: 客户端认证涉及向Web上的服务器证明客户端(或用户)的身份.[1] How 我写作风格简洁,会用到一些技术词. 免责声明:本文档不作为包含所有认证方法的网络的目录;本文档也

Application,Session,Cookie,ViewState和Cache区别

在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保存时间 应用范围 保存位置 Application 任意大小 整个应用程序的生命期 整个应用程序/所有用户 服务器端 Cache 任意大小 可以根据需要设定 整个应用程序/所有用户 服务器端 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cook

用Session实现验证码

新建一个 ashx 一般处理程序 如: YZM.ashx继承接口 IRequiresSessionState //在一般处理程序里面继承 HttpContext context 为请求上下文,包含此次请求处理要使用到的信息和对象都在里面,有Response,有Request 下面为 YZM.ashx网页内容: public class YZM : IHttpHandler,System.Web.SessionState.IRequiresSessionState { public void Pr

老生常谈session,cookie的区别,安全性

一,为什么session,cookie经常会有人提到 做web开发的人基本上都会用session和cookie,但是仅仅只是会用,并不知道session和cookie的真正的工作原理,都只是凭着感觉来猜测.web开发者只要利用它们来完成工作就行了,所以每个人的理解基本都会有大同小异,我想这就是session,cookie经常会被讨论的原因.本文也是根据个人经验,以及个人所学,对session,cookie的一些看法,纯属个人见解,希望得到大家的更正和建议. 二,什么cookie cookie分为

Warning: session_start() [function.session-start]: Cannot send session cookie解决办法

在很多时间使用了session就会出来如下提示了, Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/u114264/include/db_mysql教程.class.php教程:1) in /home/u114264/login1.php on line 3 Warning: sessio

[区别]APPlication,Session,Cookie,ViewState和Cache

原文发布时间为:2009-08-01 -- 来源于本人的百度文章 [由搬家工具导入] 在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?     为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示: 方法 信息量大小 保存时间 应用范围 保存位置 Application 任意大小 整个应用程序的生命期 所有用户 服务器端 Session 小量,简