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实现权限管系列 (开篇) ...
随机推荐
- WebService什么?
一.前言 我们或多或少都听过WebService(Web服务),有一段时间非常多计算机期刊.书籍和站点都大肆的提及和宣传WebService技术.当中不乏非常多吹嘘和做广告的成分.可是不得不承认的是W ...
- C#(SuperWebSocket)与websocket通信
原文:C#(SuperWebSocket)与websocket通信 客户端代码 点击可以查看一些关于websocket的介绍 <!DOCTYPE html> <html> &l ...
- 认识Backbone (五)
Backbone.Router(路由)/ Backbone.history(历史) Backbone.Router 为客户端路由提供了许多方法,并能连接到指定的动作(actions)和事件(even ...
- ZOJ 1203 Swordfish 旗鱼 最小生成树,Kruskal算法
主题链接:problemId=203" target="_blank">ZOJ 1203 Swordfish 旗鱼 Swordfish Time Limit: 2 ...
- net搭建热插拔式web框架(沙箱的构建)
net搭建热插拔式web框架(沙箱的构建) 上周五写了一个实现原理篇,在评论中看到有朋友也遇到了我的问题,真的是有种他乡遇知己的感觉,整个系列我一定会坚持写完,并在最后把代码开源到git中.上一篇文章 ...
- mapreduce任务失败、重试、猜測式运行机制小结
mapreduce中我们自己定义的mapper和reducer程序在运行后有可能遇上出错退出的情况,mapreduce中jobtracker会全程追踪任务的运行情况,对于出错的任务mapreduce也 ...
- Unity 二战中加飞机
一个简短的引论: 谢意: 本申请中使用<Unity3D\2D移动游戏开发>提供资源.著作权属于作者.感谢作者.基于原始时本申请的二次开发. 要素: 1.增加2s cd的机身旋转,旋转时保持 ...
- Unity该插件NGUI得知(9)—— Tween并转换成世界坐标系的大小NGUI尺寸
在游戏中,还有一种比较常见的动画,这是进球后产生,分数将被显示在游戏,而快速移动,使其失去位置加入.就打算使用NGUI的Tween来制作这样的分数动画效果. 依据 Unity插件之NGUI学习(2), ...
- 【转】[Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
android线程池的理解,晚上在家无事 预习了一下android异步加载的例子,也学习到了一个很重要的东东 那就是线程池+缓存 下面看他们的理解. [size=1.8em]Handler+Runn ...
- 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响
原文:第十二章--SQLServer统计信息(2)--非索引键上统计信息的影响 前言: 索引对性能方面总是扮演着一个重要的角色,实际上,查询优化器首先检查谓词上的统计信息,然后才决定用什么索引.一般情 ...