小菜成长史开篇
来源:互联网 发布:死人不会说话 知乎 编辑:程序博客网 时间:2024/04/28 08:55
刚刚走上职场的小菜内心忐忑不已,这不大boss就给分配任务了。
Boss:小菜啊,咱们公司的一款系统需要重构一下,关于权限方面的知识去研究一下。老板相信你能做好这件事,去做吧!
小菜:(欲哭无泪状)好的,老板!定当不辜负您的期望!
走出办公室的小菜:呜呜呜,权限是什么啊?怎么办?怎么办?我要努力,还是先把项目下下来看看吧!哦,用的是EasyUI+MVC框架,之前用过(心中窃喜)上手应该不难。哈哈哈!
接下来一周的小菜:上班补之前的知识,下班赶紧各种刷。
一周后:小菜,Boss让你去他办公室。
小菜:我干什么了吗?我怎么了?不会要辞退我吧!啊啊啊,老板交给我的任务没整,苍天啊,我干了什么??
Boss办公室:小菜啊,研究的怎么样了?还有多长时间可以完成?
小菜:老板,我看了看咱们的项目,这方面的内容应该容易实现,您再给我3天时间,保证给您一个完美答复。
Boss:好。
小菜:我们这个项目的权限知识不是很多啊,没有什么思路,我让大鸟帮我看看。
叮铃铃,叮铃铃!大鸟:小菜啊,咋啦?
小菜:我们boss给我了任务,我把项目给你发过去,你给我参谋参谋要加点什么。
大鸟:好吧。可得请我吃大餐。
小菜:NoProblem!
2个小时之后:大鸟:小菜,我看了,你们这个项目没有必要加权限的知识,我发现你们这个项目的一个大bug,你们这个项目没有设置拦截器啊,没有登录的用户也可以看到你们的页面,这可得改改。
小菜:哦,那我研究研究拦截器怎么用。
苦逼的小菜下班之后还在公司加班。终于,在公司另外一个大鸟的帮助下,拦截器的功能实现了。session功能和 cookie功能都能实现。下面让小菜娓娓道来。
Session方法:
//类和方法都使用时,加上这个特性,此时都其作用,不加,只方法起作用 [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)] public class FilterAttribute : ActionFilterAttribute { public String Message { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext);//在调用方法之前进行的操作 //判断session,为空则返回登录界面 if (System.Web.HttpContext.Current.Session["userid"] == null) { //在响应前返回到登录界面 System.Web.HttpContext.Current.Response.Write("<script language=javascript>window.top.location.href='/Login/index'</script>"); }
然后在每个controler页面加上这个过滤器。
cookie方法
之前是用session存储的信息,现在用cookies来存储,在logincontroler中存储用户信息。
//添加用户信息到cookies HttpCookie userName = new HttpCookie("userid"); userName.Value = list[0].Userid; HttpCookie passWord = new HttpCookie("pwd"); passWord.Value = list[0].Pwd; System.Web.HttpContext.Current.Response.SetCookie(userName); System.Web.HttpContext.Current.Response.SetCookie(passWord); userName.Expires = DateTime.Now.AddHours(10);//定义存储在cookies中的时间 passWord.Expires = DateTime.Now.AddHours(10); 自定义的拦截器。[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)] public class FilterAttribute : ActionFilterAttribute { public string Message { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext);//在调用方法之前进行的操作//判断Cookie用户名密码是否存在 HttpCookie userid = System.Web.HttpContext.Current.Request.Cookies.Get("userid"); HttpCookie pwd = System.Web.HttpContext.Current.Request.Cookies.Get("pwd"); if (userid == null || pwd == null) { filterContext.Result = new RedirectResult("/Login/Index"); }
这样还是得在每个controler中加上一个标签。但是又觉得这样很麻烦,那么能不能设置一个全局过滤器这样就不用在每个controler前面都写上这个过滤器了。详情请看下一篇博客。
- 小菜成长史开篇
- 小菜成长史续篇
- 小菜编程成长记
- 小菜编程成长记
- 成长开篇
- 小菜编程成长记系列
- 小菜编程成长记系列
- 小菜编程成长记系列
- 小菜编程成长记系列
- 小菜编程成长记(二、续上)
- [转][荐]小菜编程成长记系列
- 《小菜编程成长记》 源码剖析
- acm小菜的成长之路
- 程序员的成长日记-开篇
- 看了很有感觉--小菜编程成长记(一)
- 小菜编程成长记(二 代码规范、重构)
- 小菜编程成长记(三 复制VS复用)
- 小菜编程成长记(四 业务的封装)
- idea 警告:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
- echarts 配置文件详解
- 白加黑木马开发思路
- CI框架中数据库操作函数$this->db->where()相关用法总结
- MongoDB导入大的json数据文件,导入不完全,每次只能导入1000条,且只能导入1000条解决方法
- 小菜成长史开篇
- 20171213日记账流水
- sublime text 打开txt文本中文乱码解决
- WebStorm 静态资源文件引用地址报错
- Swift 扇形排列成圆
- c#中数组的操作
- RecyclerView闪屏问题
- 天气表设计
- 实现下拉文本框的输入提示功能