diff --git a/Blog.Common/Blog.Common.csproj b/Blog.Common/Blog.Common.csproj index f5ec2bbc46a5bc804f57df5b7e5cf89c2a6537ef..75370651fdd1fc2d7638ae8bd30fc788f70f8570 100644 --- a/Blog.Common/Blog.Common.csproj +++ b/Blog.Common/Blog.Common.csproj @@ -33,6 +33,7 @@ + @@ -42,11 +43,10 @@ + + - - - - + \ No newline at end of file diff --git a/Blog.Common/Consts/Constr.cs b/Blog.Common/Consts/Constr.cs new file mode 100644 index 0000000000000000000000000000000000000000..115a7d4e092d4601208675ea9666925d354abb87 --- /dev/null +++ b/Blog.Common/Consts/Constr.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Blog.Common.Consts +{ + public class Constr + { + } +} diff --git a/Blog.Common/Utils/CaptchaUtils.cs b/Blog.Common/Utils/CaptchaUtils.cs new file mode 100644 index 0000000000000000000000000000000000000000..a8ff35a53809c59295eccd3c9da48ce3a1329fdd --- /dev/null +++ b/Blog.Common/Utils/CaptchaUtils.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Blog.Common.Utils +{ + public class CaptchaUtils + { + + /// + /// 创建验证码的图片 + /// + public static byte[] CreateValidateGraphic(string validateCode) + { + Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 16.0), 27); + Graphics g = Graphics.FromImage(image); + try + { + //生成随机生成器 + Random random = new Random(); + //清空图片背景色 + g.Clear(Color.White); + //画图片的干扰线 + for (int i = 0; i < 25; i++) + { + int x1 = random.Next(image.Width); + int x2 = random.Next(image.Width); + int y1 = random.Next(image.Height); + int y2 = random.Next(image.Height); + g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); + } + Font font = new Font("Arial", 13, (FontStyle.Bold | FontStyle.Italic)); + LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), + Color.Blue, Color.DarkRed, 1.2f, true); + g.DrawString(validateCode, font, brush, 3, 2); + //画图片的前景干扰点 + for (int i = 0; i < 100; i++) + { + int x = random.Next(image.Width); + int y = random.Next(image.Height); + image.SetPixel(x, y, Color.FromArgb(random.Next())); + } + //画图片的边框线 + g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); + //保存图片数据 + MemoryStream stream = new MemoryStream(); + image.Save(stream, ImageFormat.Jpeg); + //输出图片流 + return stream.ToArray(); + } + finally + { + g.Dispose(); + image.Dispose(); + } + } + private static byte[] CreateImage(string checkCode) + { + int iwidth = (int)(checkCode.Length * 12); + System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20); + Graphics g = Graphics.FromImage(image); + Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold); + Brush b = new System.Drawing.SolidBrush(Color.White); + g.Clear(Color.Blue); + g.DrawString(checkCode, f, b, 3, 3); + Pen blackPen = new Pen(Color.Black, 0); + Random rand = new Random(); + for (int i = 0; i < 5; i++) + { + int x1 = rand.Next(image.Width); + int x2 = rand.Next(image.Width); + int y1 = rand.Next(image.Height); + int y2 = rand.Next(image.Height); + g.DrawLine(new Pen(Color.Silver, 1), x1, y1, x2, y2); + } + System.IO.MemoryStream ms = new System.IO.MemoryStream(); + image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); + return ms.ToArray(); + } + + public static string CreateRandomCode(int codeCount) + { + string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z"; + string[] allCharArray = allChar.Split(','); + string randomCode = ""; + int temp = -1; + Random rand = new Random(); + for (int i = 0; i < codeCount; i++) + { + if (temp != -1) + { + rand = new Random(i * temp * ((int)DateTime.Now.Ticks)); + } + int t = rand.Next(35); + if (temp == t) + { + return CreateRandomCode(codeCount); + } + temp = t; + randomCode += allCharArray[t]; + } + return randomCode; + } + + } +} diff --git a/Blog.Web/App_Start/AuthorizeFilter.cs b/Blog.Web/App_Start/AuthorizeFilter.cs index 04fd2605aefd752cf23ba15d74dc2991daca4d15..1219c53e1d29149749371683a031f7df4dbfd207 100644 --- a/Blog.Web/App_Start/AuthorizeFilter.cs +++ b/Blog.Web/App_Start/AuthorizeFilter.cs @@ -15,11 +15,18 @@ namespace Blog.Web.App_Start { return; } - if (filterContext.HttpContext.Session["user"] == null) { - filterContext.HttpContext.Response.Redirect("/gl/"); + filterContext.HttpContext.Response.Redirect("/gl"); + return; } + + base.OnAuthorization(filterContext); + } + + protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) + { + filterContext.Result= new RedirectResult("~/gl"); } } } \ No newline at end of file diff --git a/Blog.Web/App_Start/RouteConfig.cs b/Blog.Web/App_Start/RouteConfig.cs index 39a77a3be482af87be0852127dfc25f3f691ce07..09075ad10651501709ff057373e2422603f8ce80 100644 --- a/Blog.Web/App_Start/RouteConfig.cs +++ b/Blog.Web/App_Start/RouteConfig.cs @@ -13,7 +13,11 @@ namespace Blog.Web { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); - + routes.MapRoute( + name: "Article", + url: "Article/{action}/{id}", + defaults: new { controller = "Article", action = "Index", id = UrlParameter.Optional } + ); routes.MapRoute( name: "gl", url: "gl/{action}/{id}", diff --git a/Blog.Web/Controllers/MangerController.cs b/Blog.Web/Controllers/MangerController.cs index 36a05c4ae9ea2640ee5e34b6ebc17757eb34cfce..d1d227ab8be4a44777ee25b8a038c7fb23d699b2 100644 --- a/Blog.Web/Controllers/MangerController.cs +++ b/Blog.Web/Controllers/MangerController.cs @@ -8,10 +8,13 @@ namespace Blog.Web.Controllers { public class MangerController : Controller { + [AllowAnonymous] // GET: Manger public ActionResult Index() { return View(); } + + } } \ No newline at end of file