作者:王文青
开发工具与关键技术:VS+ASP.Net MVC +SQL Server
数据库的设计:
用户表 | SYS_Users |
---|---|
用户ID | UsersID |
用户类型ID | UsersTypesID |
账号 | AccountNumber |
密码 | Password |
用户姓名 | UsersName |
手机号码 | Phone |
头像路径 | AvatarPath |
创建时间 | CreationTime |
用户类型表 | SYS_UserTypes |
---|---|
用户类型ID | UsersTypesID |
用户类型MC | UserTypesName |
描述 | Describe |
系统模块功能表 | SYS_SystemModuleFunction |
---|---|
系统模块功能ID | SystemModuleFunctionID |
父ID | FarID |
系统模块功能MC | SystemModuleFunctionName |
路径 | URL |
代码名称 | CodeName |
启用否 | WhetherToEnable |
排序 | Sort |
描述 | Describe |
权限组表 | SYS_UserPermissions |
---|---|
权限组ID | AuthorizationGroupID |
用户类型ID | UsersTypesID |
模块功能ID | ModuleFunctionID |
添加人ID | ToAddPeopleID |
添加时间 | AddTheTime |
启用否 | WhetherToEnable |
使用ActionFilterAttribute过滤类在某个方法前使用
[Permissions(Code = "代码名称")]//执行方法前使用
public ActionResult TeamSpecifiedTimeSetting{
return View();
}
建立Permissions .cs 内容如下
public class Permissions : ActionFilterAttribute{//继承过滤类
/// <summary>
/// 获取Code名称
/// </summary>
public string Code{
get;
set;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
bool isstate = true;
if(isstate){
//逻辑判断代码
}else{
filterContext.Result = new RedirectResult("url" + "没有该模块的权限")
}
}
}
项目总结:
在这次项目中,学到用过滤类(ActionFilterAttribute)做权限的验证,使用cookie存放查询出的内容,在到cookie查询需要的权限,提高性能,减少提交。虽然项目是升级,看别人的代码,然后使劲改,最恶心的if else多层嵌套写了几千行,代码看着我一脸懵逼,代码可读性非常低。代码应该减少if else嵌套,一样的代码用封装,提高代码的可读性,维护性。