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