zoukankan      html  css  js  c++  java
  • Http 协议 请求 响应

     今天 在做.net mvc 项目中 关于权限限定模块 通过重载Controller 的OnActionExecuting方法 进行 action调用前的验证

     protected override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                base.OnActionExecuting(filterContext);

                #region 用户权限验证
                            String str =Request.Url.AbsoluteUri;
                            string[] strs = str.Split('/');
                           
                            if (strs.Count() >= 4)
                            {   
                                string skey = strs[3];

                                if (skey != "Login")
                                {
                                    #region 用户登陆验证
                                    if (Session["UserID"] == null || Session["current_user"] == null)
                                    {
                                        Session["alertInformation"] = "页面已经过期,请重新登陆!";
                                        //filterContext.HttpContext.
                                        Response.Redirect("/Login/Index");
                                        //Response.Redirect("/LossCancel/Index");
                                        Response.End();
                                      return;
                                    }
                                    #endregion           
                                    if (skey != "Welcome")
                                    {
                                        Hashtable table = GetHashtable();
                                        foreach (DictionaryEntry de in table)
                                        {
                                            if (skey.Equals(de.Key))
                                            {
                                                bool permission = false;

                                                try
                                                {
                                                    permission = new IsPermission().IsTrue(de.Value.ToString(), (string)Session["UserID"]);
                                                }
                                                catch (Exception ex)
                                                {
                                                    logger.Error(ex);
                                                    Session["alertInformation"] = "页面已经过期,请重新登陆!";
                                                    Response.Redirect("/Login/Index");
                                                    Response.End();  //此处语句执行后 服务器就给浏览器响应 但本线程继续往下执行

                                                                              //服务器接到响应302 立刻启动一个线程访问服务器(url:/Login/Index)

                                                }
                                                if (!permission)
                                                {
                                                    Session["alertInfop"] = "对不起,您没有此权限!";
                                                    Response.Redirect("/Login/Welcome");
                                                    Response.End();
                                                }
                                            }
                                        }
                                    }
        
                       }
                     }                    
                        
                     #endregion       

      对于 Http协议:每一次请求 对应一次响应 服务器每得到一次请求 就建立一个线程对其进行处理 并响应

  • 相关阅读:
    Secret-field团队 Alpha冲刺阶段博客记录
    alpha阶段测试报告
    第七周会议记录
    第六周会议记录
    《Secret—field团队》第一次作业:公课网课程评价系统
    linux下用hadoop streaming 跑php总是jobs fail!
    php请求nginx服务器返回403
    Linux达人养成计划I——文件搜索命令
    Linux达人养成计划I——链接命令
    Linux达人养成计划I——常见目录作用
  • 原文地址:https://www.cnblogs.com/xcwytu/p/2385210.html
Copyright © 2011-2022 走看看