ASP.NET MVC+EF框架+EasyUI实现权限管理系列(12)-实现用户异步登录和T4模板
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(12)-实现用户异步登录和T4模板
ASP.NET MVC+EF框架+EasyUI实现权限管系列
(开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装
(5):前台Jquery easyUI实现 (6):EF上下文实例管理 (7):DBSession的封装 (8):DBSession线程内唯一
(9):TT摸版的学习 (10):VSS源代码管理 (11):验证码实现和底层修改
前言:上篇博客我们简单的讲述了一下验证码的实现和Func<T,bool>,Expreesion<Func<T,bool>>的区别,我也看到了大家的评论,在这里我很高兴能看到大家积极的评论我项目中的一些小的问题,也希望大家在后面能够积极的给我的项目给出意见,只有这样我觉得我才能学的更多,而且大家也能够学到一定的东西,那么下面我们就开始实现我们的今天的东西,今天我想主要实现用户异步登录以及对T4摸版的实现,这也是整个项目底层最终的完成版,从下篇博客开始我们就要设计权限了。
1. 使用Jquery发送异步请求
(1)上篇博客我们已经实现了验证码以及用户界面的设置,在这里秀一下界面:

(2)下面我们首先在前台页面写代码发送异步请求,因为我们是使用Jquery发送异步请求的,所以我们就必须引入Jquery文件,发送异步请求的代码如下,我写了很详细的注释,其他的这里我就不解释了。
@*引用Jquery文件的JS脚本*@
<script src="~/Scripts/jquery-1.7.1.js"></script>
<script type="text/javascript">
//当用户刷新页面触发的方法
$(function() {
//实现用户登录的方法
LoginUserInfo();
//单击的时候修改验证码的方法
ClickRemoveChangeCode();
});
//实现用户登录
function LoginUserInfo() {
//获取单击用户登录按钮的事件
$("#btnLogin").click(function() {
//首先获取到要传递到控制器的参数,并且狗造成Json。UName,Pwd,Code
var postData = {
UName: $("#UName").val(),
Pwd: $("#Pwd").val(),
Code: $("#Code").val()
};
//发送异步请求实现登录
$.post("/Login/CheckUserInfo", postData, function(data) {
if (data == "OK") {
window.location.href = "/Home/Index";
} else {
alert(data);
window.location.href = "/Login/Index";
}
});
});
}
//单击重新改变验证码
function ClickRemoveChangeCode() {
//首先我们获取到验证码的路径
var code = $("#imgCode").attr("src");
//然后重新给验证码的路径赋值
$("#imgCode").attr("src", code + "");
}
</script>
(3)通过上面的方法我们就将整个用户登录需要的信息(用户名,密码,验证码)已经发送给控制器了,这时候我们控制器里面就要调用业务逻辑层进行对用户名和密码的验证。
2.业务逻辑层验证用户名密码是否正确
(1)上面我们已经写完了发送请求的Jquery方法,那么这时候我们看到了我们要实现Login控制器下面的CheckUserInfo方法,那么这时候我们还缺什么呢?当然是我们就要去实现验证用户名密码是否正确的业务逻辑的书写,针对这个项目下面我说一下要实现一个业务逻辑的方法的一般步骤如下。
(2)第一步:一般情况下,首先我们会去业务逻辑接口层(LYZJ.UserLimitMVC.IBLL)去加接口约束,针对用户登录的话如果登录成功,我们返回用户登录信息的实体,传递的参数也是用户需要的实体对象,当然我们也可以传递用户名,密码等字符串,这里的取决在于自己,那么我们给IUserInfoService类中加的接口如下:
public interface IUserInfoService:IBaseService<UserInfo>
{
//在这里添加一个用户登录信息的约束
UserInfo CheckUserInfo(UserInfo userInfo);
}
(3)第二步:当我们加完接口约束之后,我们就去业务逻辑层(LYZJ.UserLimitMVC.BLL)的UserInfoService类里面去实现接口,在这里我们实现验证用户名密码是否正确的方法。
//完成了对用户的校验
public UserInfo CheckUserInfo(UserInfo userInfo)
{
//在这里会去数据库检查是否有数据,如果没有的话就会返回一个空值
return _DbSession.UserInfoRepository.LoadEntities(u => u.UName == userInfo.UName && u.Pwd == userInfo.Pwd).FirstOrDefault();
}
(4)经过上面的两步,现在我们已经实现了判断用户名密码是否正确的方法,那么下面我们就是去控制器中直接调用我们在业务逻辑层完成的方法即可。
3.在控制器中验证验证码是否正确和用户登录的过程
(1)当我们完成在业务逻辑层对用户是否正确的判断之后,这时候我们就要去控制器中实现最终的判断了,这时候我们在控制器中首先要判断验证码是否正确,其次我们就是判断用户输入的用户名密码是否正确,代码中都写了注释,就不详细说了。
//实例化UserInfo接口的对象
private IBLL.IUserInfoService _userInfoService = new UserInfoService();
//实现用户的登录
public ActionResult Index()
{
return View();
}
//判断用户输入的信息是否正确
[HttpPost]
public ActionResult CheckUserInfo(UserInfo userInfo, string Code)
{
//首先我们拿到系统的验证码
string sessionCode = this.TempData["ValidateCode"] == null
? new Guid().ToString()
: this.TempData["ValidateCode"].ToString();
//然后我们就将验证码去掉,避免了暴力破解
this.TempData["ValidateCode"] = new Guid();
//判断用户输入的验证码是否正确
if (sessionCode != Code)
{
return Content("验证码输入不正确");
}
//调用业务逻辑层(BLL)去校验用户是否正确
var loginUserInfo = _userInfoService.CheckUserInfo(userInfo);
if (loginUserInfo != null)
{
return Content("OK");
}
else
{
return Content("用户名密码错误");
}
}
(2)到这里我们的登录就搞完事了,这时候你可以自己去试着登录了。下面我秀几张登录的图片。
4.登录状况的图片
(1)通过上面的介绍,现在我们已经实现了登录的效果,但是在这里我没有对登录是否输入做验证,也就是几个文本框必须输入内容没有做验证,但是不输入内容的话用户登录还是登录不了,会提示后台返回错误。


5.T4模版
(1)这篇博客我将T4模版写在这里的意思是我要写完这个项目的所有用到T4模版的地方,因为我们的项目在数据访问层以及业务逻辑层都有很多东西能够自动生成出来,所以我选择写T4模版,但是在这篇博客我就不列出来了,因为在以前我已经写过一个例子了,他们和我们修改其他层的T4模版的代码基本都一样,地址是: http://www.cnblogs.com/hanyinglong/archive/2013/04/18/3029649.html。
(2)今天不知道怎么了,有点头疼,T4模版我不行的话明天会写的,本来打算今天先把以前写的这部分博客上传的,但是现在看来不可能了。如果各位谁需要的话,留言,我明天晚上上传之后把地址发给你们。
5.小结
(1)随着项目现在已经进入了前面的实现界面的过程了,现在开始我也就不仔细的写了,只要写一些重要的代码即可,当然如果遇到业务的话我还是会仔细讲的,希望大家能够慢慢领会吧,赶紧上传了休息会,头要炸了!
(2)最后感谢我群里的朋友对我的项目提出的宝贵意见,谢谢你们!

由于上面的登录页面我是在网上下载的,如果有任何版权问题,请及时联系我们,我将第一时间修改~
最新项目下载地址:http://download.csdn.net/detail/hanyinglong/5285137
Kencery返回本系列开篇
相信自己,你就是下一个奇迹!
ASP.NET MVC+EF框架+EasyUI实现权限管理系列(12)-实现用户异步登录和T4模板的更多相关文章
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(22)-为用户设置角色
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列
http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
随机推荐
- 02、Unicode 汉子转码小工具
原文:02.Unicode 汉子转码小工具 在做 Windows app 的时候,与服务器端交互使用的是 json 格式的数据,里面的汉字内容被 编码成 unicode 格式,在调试的时候不太方便,就 ...
- 使用DbUtils实现CRUD
commons-dbutils 这是 Apache 提供了一个开源组织 JDBC工具库,它是JDBC简包,学习成本低,和使用dbutils可以大大简化jdbc的工作量,同一时候也不会影响程序的性能.因 ...
- 如何知道 win10 的激活到期时间和期限等
在“运行”里输入cmd,出来dos对话框后,输入下面的东西后,按Enterslmgr.vbs -dli (显示:操作系统版本.部分产品密钥.许可证状态)slmgr.vbs -dlv (显示:最为详尽的 ...
- Idea开发环境
Idea开发环境中搭建Maven 1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path ...
- VC POST表单——登录验证新浪邮箱
1.本机环境: Windows XP SP3.ADSL 2.开发工具: WildPackets OmniPeek V5.1.4 Visual C++ 6.0 IE6.0 FlexEdit V2.3.1 ...
- SpringMVC Ajax返回的请求json
的方式来解决在中国字符串乱码问题
1.org.springframework.http.converter.StringHttpMessageConverter类是类处理请求或相应的字符串.和默认字符集ISO-8859-1,所以当返回 ...
- 何时使用SET和SELECT为变量赋值
原文:何时使用SET和SELECT为变量赋值 我们经常使用SET和SELECT来为变量复制,但是有时候,只能选其一来使用,下面来看看这些例子,本例中使用AdventureWorks数据库来做演示. 通 ...
- HDU ACM 1065 I Think I Need a Houseboat
分析:告诉协调的房子,每年(0,0)作为一个半圆区域的中心将被添加50.请教如何多年以来,这家的位置将是半圆内.注意pi必须采取3.1415926管辖权. #include<iostream&g ...
- 【甘道夫】HBase连接池 -- HTablePool是Deprecated之后
说明: 近期两天在调研HBase的连接池,有了一些收获,特此记录下来. 本文先将官方文档(http://hbase.apache.org/book.html)9.3.1.1节翻译,方便大家阅读,然后查 ...
- 导出文本pdf文件
出口手续往往是一些数据需求,学习文本导出到今天pdf文件.主要用于QPrinter,QPainter TextEditToPdf::TextEditToPdf(QWidget *parent, Qt: ...