亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

WebAPI——cookie與session遇到的問題

2024-06-28 16:01:03
字體:
來源:轉載
供稿:網友

      這兩天要做一個用戶登陸驗證的接口,用MVC這種action和view結合的做的話比較好做,但是直接使用webapi做的過程中遇到了不少困難,這里和大家分享一下==

一、WebAPI中session與cookie操作

由于兩者用的框架不一樣,當然webapi有自己的操作方法。

            string user = HttpContext.Current.Request["user"];            //string pw = HttpContext.Current.Request["pw"];            HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["user"];            //沒有cookie            if (cookie == null)            {                //用戶正確                if (user.Equals("xcy"))                {                    //設置客戶端cookie                    cookie = new HttpCookie("user");                    cookie.Domain = Request.RequestUri.Host;                    cookie.Path = "/";                    cookie.Values["user"] = user;                    //cookie.Values["user2"] = user;                    //cookie.Values.Add("user", user);                    //設置服務端session                    //HttpContext.Current.Response.Cookies[""]                    HttpContext.Current.Response.AppendCookie(cookie);                    HttpContext.Current.Session["user"] = user;                    return Ok("登陸成功");                }                //用戶不正確                else                {                    return Ok("用戶名不對");                }            }            //有cookie            else            {                string session = HttpContext.Current.Session["user"].ToString();                string co = cookie.Values["user"];                if (co.Equals(session))                {                    return Ok("登陸成功");                }                else                {                    return Ok("登陸已過期");                }            }代碼邏輯性就不要看了,直接看看操作方法就ok。

二、用戶登錄驗證思路

第一種(基于session):

      初次登陸時通過數據庫驗證,驗證成功則在session中保存用戶名“user”;

      以后每次其他頁面使用的時候要進行session判斷看其中user是否有變量,有的話則默認進入頁面,沒有的話直接返回登錄界面;

第二種(基于cookie):

      初次登陸的時候通過數據庫驗證,驗證成功則在cookie中設置user,讓瀏覽器每次帶著它返回(設置cookie生命周期還沒找到);

      第二次登陸的時候獲取cookie看user是否有值,有的話則登陸成功,沒有的話則返回登錄界面;

第三種(第一種session的延伸)

      原理基本和第一種一樣,但是不是用session保存,為了不同服務器數據的共享,保存在數據庫memcache中;

我采用的是第一種,比較簡單,而且性能要求也沒那么高,在MVC的WebApi中默認是沒有開啟Session會話支持的。需要在Global中重寫Init方法來指定會話需要支持的類型

        public override void Init()        {            this.PostAuthenticateRequest += (sender, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);            base.Init();        }

三、webapi過濾器和mvc過濾器的區別

在各個頁面使用登錄驗證的時候都添加太麻煩,所以過濾器要派上用場。

這是mvc中的幾種過濾器

webapi中的過濾器類似使用方法并不完全相同。

當時我自己創建了一個過濾器如下

 public class MyActionFilterAttribute: ActionFilterAttribute    {        public string name { get; set; }        //public override void OnActionExecuting(ActionExecutingContext filterContext)        //{        //    base.OnActionExecuting(filterContext);        //    filterContext.HttpContext.Response.Write("開始時間:" + DateTime.Now.ToString() + name+"<br/>");        //}        //public override void OnActionExecuted(ActionExecutedContext filterContext)        //{        //    base.OnActionExecuted(filterContext);        //    var controllerName = filterContext.RouteData.Values["controller"].ToString();        //    var actionName = filterContext.RouteData.Values["action"].ToString();        //    filterContext.HttpContext.Response.Write("結束時間:" + DateTime.Now.ToString() + "<br/>");        //    filterContext.HttpContext.Response.Write("controller:" + controllerName + ",action:" + actionName);        //}        //public override void OnResultExecuting(ResultExecutingContext filterContext)        //{        //    base.OnResultExecuting(filterContext);        //    filterContext.HttpContext.Response.Write("開始時間:" + DateTime.Now.ToString() + "<br/>");        //}        //public override void OnResultExecuted(ResultExecutedContext filterContext)        //{        //    base.OnResultExecuted(filterContext);        //    filterContext.HttpContext.Response.Write("開始時間:" + DateTime.Now.ToString() + "<br/>");        //}        public override void OnActionExecuting(HttpActionContext actionContext)        {            base.OnActionExecuting(actionContext);            Debug.WriteLine("ACTION 1 DEBUG PRe-processing logging");            //actionContext.Response.        }        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)        {            base.OnActionExecuted(actionExecutedContext);            Debug.WriteLine("ACTION 1 DEBUG  OnActionExecuted Response " + actionExecutedContext.Response.StatusCode.ToString());        }    }

      filter觸發不了 ,寫了一個filter的例子,繼承actionfilterattribute,死活觸發不了。搞了半天后來才搞明白,filter 繼承了mvc4的。原來webapi 在system.web.http命名空間下,mvc在System.web.mvc下,兩個空間都有filter,不知道怎么搞得,繼承mvc的了。上面注釋代碼是繼承mvc時使用的代碼==

四、登錄界面保存的session獲取不到

      這個把我都快搞炸了,后來分析后發現每次驗證的時候request中cookie值都沒有,分析了一下是不是跨域的問題,后來改調試模式為上線模式(我調試的時候前后端分開的),問題就好了===但是如何讓cookie在跨域的時候也包含到request里面還沒弄太清楚,貌似只有html和webservice在一個服務器上才可以==

      初次涉及到用戶驗證,理解不是很深入,一知半解分享給大家,不明白的地方求大牛指點==


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品一区二区在线| 亚洲成色777777在线观看影院| 日韩午夜在线视频| 成人免费视频在线观看超级碰| 性色av一区二区咪爱| 自拍偷拍亚洲精品| 久久久久中文字幕2018| 欧美性受xxxx黑人猛交| 亚洲国产福利在线| 日本一区二区三区四区视频| 久久在线免费视频| 日韩电影中文字幕在线观看| 亚洲丝袜在线视频| 国产精品视频精品| 91精品视频播放| 欧美一级片免费在线| www.日韩av.com| 国产一区二区精品丝袜| 亚洲一二三在线| 亚洲第一精品夜夜躁人人躁| 色综合久久天天综线观看| 精品中文视频在线| 国产在线精品自拍| 亚洲xxxx妇黄裸体| 亚洲xxx视频| 国产亚洲免费的视频看| 日本午夜人人精品| 精品女同一区二区三区在线播放| 国产91精品高潮白浆喷水| 欧美裸体男粗大视频在线观看| 欧美裸体xxxx极品少妇软件| 欧美大片网站在线观看| 国产91在线播放| 国产va免费精品高清在线| 国产精品一区二区久久精品| 日韩精品极品毛片系列视频| 国产精品手机播放| 国产成人精品久久久| 亚洲影视九九影院在线观看| 国产精品久久久久91| 亚洲国产免费av| 亚洲精品大尺度| 亚洲成人999| 国产精品成熟老女人| 亚洲综合第一页| 美女视频黄免费的亚洲男人天堂| 亚洲天堂免费在线| 亚洲精品电影在线| 欧美日韩成人精品| 国产亚洲欧洲高清一区| 国产成人综合久久| 91国在线精品国内播放| 日韩在线www| 久久久久久国产精品美女| 成人美女av在线直播| 日韩视频在线观看免费| 亚洲精品久久久久| 欧美视频中文在线看| 日韩精品高清在线观看| 久久99国产精品久久久久久久久| 日韩高清有码在线| 亚洲一区二区三区成人在线视频精品| 日产精品99久久久久久| 欧美资源在线观看| 欧美成人一区在线| 亚洲国产成人精品久久| 亚洲国产私拍精品国模在线观看| 欧美自拍视频在线| 91精品国产高清久久久久久久久| 51视频国产精品一区二区| 一本大道香蕉久在线播放29| 欧美电影在线观看网站| 亚洲电影免费观看高清完整版在线观看| 欧美一区二三区| 欧洲一区二区视频| 久久人人爽人人爽人人片亚洲| 美女精品久久久| 国产精品老女人精品视频| 久久91精品国产| 国产精品伦子伦免费视频| 亚洲精品国产欧美| 青青久久aⅴ北条麻妃| 91精品久久久久久久久中文字幕| 日韩**中文字幕毛片| 亚洲免费影视第一页| 国产欧美日韩中文| 欧美日韩黄色大片| 国产精品色午夜在线观看| 精品久久久999| 亚洲第一页自拍| 欧美一级电影免费在线观看| 日韩中文在线中文网三级| 国产精品专区第二| 亚洲第一区第二区| 久久精品视频播放| 亚洲专区在线视频| 国产成人福利夜色影视| 亚洲欧美精品中文字幕在线| 亚洲福利视频二区| 国产男女猛烈无遮挡91| 欧美成人午夜视频| 色综合久久久久久中文网| 中文字幕欧美视频在线| 日韩视频在线免费观看| 国产深夜精品福利| 亚洲欧美国内爽妇网| 欧美又大粗又爽又黄大片视频| 欧美性理论片在线观看片免费| 欧美精品成人91久久久久久久| 欧美激情国产高清| 最近中文字幕2019免费| 亚洲精品v欧美精品v日韩精品| 黑人巨大精品欧美一区免费视频| 91亚洲va在线va天堂va国| 影音先锋欧美精品| 日韩av中文字幕在线免费观看| 97在线观看视频国产| 亚洲福利在线视频| 久久免费少妇高潮久久精品99| 日韩在线视频网站| 久久久午夜视频| 欧美大片在线看| 精品网站999www| 在线中文字幕日韩| 欧美巨猛xxxx猛交黑人97人| 69久久夜色精品国产69乱青草| xxx一区二区| 亚洲成年网站在线观看| 亚洲国产天堂久久国产91| 亚洲午夜av电影| 国产精品福利网站| 97精品在线视频| 97国产一区二区精品久久呦| 日韩精品极品在线观看播放免费视频| 国产精品午夜视频| 欧美日韩国产一区中文午夜| 欧美精品videofree1080p| 亚洲男人的天堂在线播放| 国内精品久久久久| 91精品国产91久久久久久久久| 亚洲偷欧美偷国内偷| 琪琪亚洲精品午夜在线| 日韩在线观看免费全| 91av在线免费观看视频| 成人黄在线观看| 亚洲一区二区日本| 黑人巨大精品欧美一区二区| 亚洲一区二区三区在线视频| 亚洲色图国产精品| 欧美区二区三区| 国产成人福利夜色影视| 91久久精品视频| 精品国产一区二区三区久久狼5月| 亚洲成人激情在线观看| 亚洲国产精品va在线| 亚洲夜晚福利在线观看| 青青青国产精品一区二区| 亚洲已满18点击进入在线看片| 亚洲综合自拍一区| 亚洲男人天堂网| 91免费看国产| 九九久久久久99精品| 国产成人精品免高潮费视频| 亚洲一区二区三区乱码aⅴ|