Web应用程序系统的多用户权限控制设计及实现-登录模块【4】
通过前三个模块的介绍,把web权限系统开发所需要的基本类,Css文件,EasyUI框架等准备好后,就可以着手开始系统的编码了。
登陆模块是权限处理系统的关键,根据输入用户的的信息,可自动从数据库中加载该用户可以访问的页面,匹配出可以操作的模块。
由于登录模块是系统的基本模块,因此没有单独放在一个域里面。登录的控制器在项目默认的Controllers文件夹下。登录对应的视图在项目默认的Views文件夹下。
1.1视图
登录视图中比较重要的是通过.NET MVC的Ajax异步方式提交用户名和密码到后台服务。
提交格式如下:@using (Ajax.BeginForm("Login", "Login",
new AjaxOptions
{
OnBegin = "loginBefore",
OnSuccess = "showMessage"
}))
在提交数据前做必要的数据格式校验,提交成功后,通过Login.js文件中的函数跳转到首页。登录模块的详细视图内容如下:
1.2 JS文件
登录模块所用的JS文件在项目的根目录Scripts目录下。它主要是提交登录信息,根据服务器返回的结果判断登录信息是否有效。详细的JS代码如下:
1.3 控制器
登录控制器是整个权限处理的核心模块,它根据用户的信息自动加载出用户可以访问的目录信息,可以访问的网页信息通过Session的方式,把信息通过SessionManage基本类进行会话管理。部分代码如下:
SessionManage.CurrentUser = null;先清空会话信息
#region 封装用户信息
var currentUser = new AccountInfo();
currentUser.OperatorId = Convert.ToString(dr["accountid"]);
currentUser.OperatorName = DBNull.Value.Equals(dr["accountname"]) ? "" : Convert.ToString(dr["accountname"]);
currentUser.AliasName = DBNull.Value.Equals(dr["aliasname"]) ? "" : Convert.ToString(dr["aliasname"]);
currentUser.Sex = DBNull.Value.Equals(dr["sex"]) ? "" : (Convert.ToInt32(dr["sex"]) == 0 ? "男" : "女");
currentUser.OperatorGroupId = DBNull.Value.Equals(dr["groupid"]) ? "" : Convert.ToString(dr["groupid"]);
currentUser.OperatorGroupName = (string.IsNullOrEmpty(groupName) ? "" : groupName.Substring(0, groupName.Length - 1));
SessionManage.CurrentUser = currentUser; //保存基本信息
#endregion
//目录列表(存储登录人员可以访问的一级目录和访问的网页)
IList<Catalog> navigationList = new List<Catalog>();
IList<Catalog> rightList = new List<Catalog>();
控制器的完整代码如下:
1.4界面运行截图
1.5验证码生成控制器
验证码的处理方式也是一个控制器,它对应一个视图页面。视图页面中不需要编写代码,只是需要视图这个文件。供登录模块调用。对于视图的生成,只需要右键ValidateCode,点击添加视图就可以了。
public ActionResult ValidateCode()
{
CreateCheckCodeImage(GenerateCheckCode());
return View();
}
验证码生成的控制器代码如下: