.net mvc4连接oracle,三、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——用户登录...

3、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——用户登录

最近由于项目赶着上线,一直没时间接着写博客,今天终于空出了时间。声名:我不是专业美工,所以界面问题,希望大家不要拍砖。登录界面如下:

141835440.jpg

在ASP.NET MVC中,要新增一个功能,我们首先要添加一个控制器,AccountController.cs,添加方法:右键单击Controllers文件夹,

141835441.jpg

///

/// 登录页面

///

///

public ActionResult Index()

{

return View();

}

///

/// 点击 登录系统 后取消

///

/// 登录信息

///

[HttpPost]

public ActionResult Index(LogOnModel model)

{

#region 验证码验证

if (Session["_VCode"] != null && model.ValidateCode!=null&& model.ValidateCode.ToLower() != Session["_VCode"].ToString())

{

ModelState.AddModelError("PersonName", "验证码错误!"); //return "";

return View();

}

#endregion

if (ModelState.IsValid) //这个是界面数据的模型验证 对应LogOnModel模型类中 诸如:[Required(ErrorMessage = "请填写用户名")] 必填 ...等验证

{

SMUSERTB person = _accountService.ValidateUser(model.PersonName, xEncrypt.EncryptText(model.Password));

if (person != null) //登录成功

{

Account account = new Account();

account.USER_NAME = person.USER_NAME;

account.UID = person.U_ID;

account.USER_ID = person.USER_ID;

account.GuidCode = person.GUILD_CODE;

Session["account"] = account;

return RedirectToAction("Index", "Home");

}

}

ModelState.AddModelError("PersonName", "用户名或者密码出错。");

return View();

}

public void ValidateCode()

{

Response.ClearContent(); //需要输出图象信息 要修改HTTP头

Response.ContentType = "image/jpeg";

ValidateCodeFun.CreateValidateCode(4);

}其中LogOnModel是专门为登录进行设计的业务模型,

public class LogOnModel

{

[Required(ErrorMessage = "请填写用户名")]

[DisplayName("用户名")]

public string PersonName { get; set; }

[StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 3)]

[Required(ErrorMessage = "请填写密码")]

[DataType(DataType.Password)]

[DisplayName("密码")]

public string Password { get; set; }

[Required(ErrorMessage = "请填写验证码")]

[DisplayName("验证码")]

public string ValidateCode { get; set; }

[DisplayName("记住我?")]

public bool RememberMe { get; set; }

}

关于验证码类,我就不多说了,大家都懂,我这里直接贴代码,如下:

public static class ValidateCodeFun

{

public static void CreateValidateCode(int codeNum)

{

string vnum= GetByRndNum(codeNum);

Bitmap Img = null;

Graphics g = null;

Random random = new Random();

int gheight = vnum.Length * 16;

Img = new Bitmap(gheight, 26);

g = Graphics.FromImage(Img);

//Font f = new Font("微软雅黑", 16, FontStyle.Bold);

Color[] c = { Color.SpringGreen, Color.Red, Color.LightBlue, Color.SeaGreen, Color.Orange, Color.Yellow, Color.RosyBrown };

Font f = new Font("宋体", 16, FontStyle.Bold);

g.Clear(Color.White);//设定背景色

//Pen blackPen = new Pen(ColorTranslator.FromHtml("#e1e8f3"), 18);

Pen blackPen = new Pen(c[random.Next(7)], 18);

//画图片的前景噪音点

for (int i = 0; i < 80; i++)

{

int x = random.Next(Img.Width);

int y = random.Next(Img.Height);

Img.SetPixel(x, y, Color.FromArgb(random.Next()));

}

for (int i = 0; i < 128; i++)// 随机产生干扰线,使图象中的认证码不易被其它程序探测到

{

int x = random.Next(gheight);

int y = random.Next(20);

int xl = random.Next(6);

int yl = random.Next(2);

g.DrawLine(blackPen, x, y, x + xl, y + yl);

}

SolidBrush s = new SolidBrush(ColorTranslator.FromHtml("#411464"));

g.DrawString(vnum, f, s, 1, 1);

//画边框

blackPen.Width = 1;

g.DrawRectangle(blackPen, 0, 0, Img.Width - 1, Img.Height - 1);

Img.Save(HttpContext.Current.Response.OutputStream, ImageFormat.Jpeg);

s.Dispose();

f.Dispose();

blackPen.Dispose();

g.Dispose();

Img.Dispose();

//Response.End();

}

//-----------------给定范围获得随机颜色

static Color GetByRandColor(int fc, int bc)

{

Random random = new Random();

if (fc > 255)

fc = 255;

if (bc > 255)

bc = 255;

int r = fc + random.Next(bc - fc);

int g = fc + random.Next(bc - fc);

int b = fc + random.Next(bc - bc);

Color rs = Color.FromArgb(r, g, b);

return rs;

}

//取随机产生的认证码(数字)

public static string GetByRndNum(int VcodeNum)

{

string VNum = "";

Random rand = new Random();

for (int i = 0; i < VcodeNum; i++)

{

VNum += VcArray[rand.Next(0, 61)];

}

HttpContext.Current.Session["_VCode"] = VNum.ToLower();

return VNum;

}

private static readonly string[] VcArray =

new string[] {"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","v","w","x","y","z","A","B","C","D","E","F","G",

"H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" };

}

最后,看下视图View,新建View方法如下:

141835442.jpg

View十分简单,这里我就不多说,自己看代码,如下:

@model YKT.Model.LogOnModel

@{

Layout = null;

}

企业平台登录

function RefreshValidateCode(obj) {

obj.src = "/Account/ValidateCode/" + Math.floor(Math.random() * 10000);

}

@using (Html.BeginForm((string)ViewBag.FormAction, "Account"))

{

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值