zoukankan      html  css  js  c++  java
  • API 读写cookie的方法

    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using System.Linq;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Web;
    using System.Web.Http;
    
    namespace API.Cookie
    {
        public class CookieInfo
        {
            public static readonly CookieInfo Instance = new CookieInfo();
    
            /// <summary>
            /// 生成Cookie
            /// </summary>
            /// <param name="value"></param>
            /// <param name="b"></param>
            /// <returns></returns>
            public CookieHeaderValue[] CookieSet(object value, HttpRequestMessage Request, bool b = true)
            {
                var json = JsonConvert.SerializeObject(value);
                string id = EncryptionAES.Instance.Encrypt(json);
    
                if (b)
                {
                    #region 方法一
    
                    var cookie = new CookieHeaderValue("session", id);
                    cookie.Expires = DateTimeOffset.Now.AddDays(1);//不设置时间,浏览器关闭自动清除
                    cookie.Domain = Request.RequestUri.Host;
                    cookie.Path = "/";
    
                    return new CookieHeaderValue[] { cookie };
    
                    #endregion
                }
                else
                {
                    #region 方法二
    
                    var nv = new NameValueCollection();
                    nv["sid"] = id;
                    nv["token"] = "abcdef";
                    nv["theme"] = "dark blue";
    
                    var cookie = new CookieHeaderValue("session", nv);
                    //cookie.Expires = DateTimeOffset.Now.AddDays(1);//不设置时间,浏览器关闭自动清除
                    cookie.Domain = Request.RequestUri.Host;
                    cookie.Path = "/";
    
                    return new CookieHeaderValue[] { cookie };
    
                    #endregion
                }
            }
    
            public string StaffNO { get; set; }
            public string UserName { get; set; }
    
            public void GetUserInfo(HttpRequestMessage Request)
            {
                string o = this.CookieGet(Request);
                string id = EncryptionAES.Instance.Decrypt(o);
                var u = JsonConvert.DeserializeObject<UserInfo>(id);
                //JsonConvert.DeserializeObject<List<PuchaseInfoLog>>(entity.txtPurchaseLog);
                if (u != null)
                {
                    StaffNO = u.StaffNO;
                    UserName = u.UserName;
                }
                else {
                    StaffNO = "";
                    UserName = "";
                }
               
            }
    
            /// <summary>
            /// 获取Cookie
            /// </summary>
            /// <param name="b"></param>
            /// <returns></returns>
            public string CookieGet(HttpRequestMessage Request, bool b = true)
            {
                //记录用户Code到Cookie中
                //HttpCookie coo = HttpContext.Current.Request.Cookies["session"];
                //if (coo == null)
                //{
                //    coo = new HttpCookie("session");
                //}
                //coo["User"] = null;// user.UserCode;
                //coo.Expires = DateTime.Now.AddDays(7.0);
                //HttpContext.Current.Request.Cookies.Remove("session");
                //HttpContext.Current.Request.Cookies.Add(coo);
    
    
    
    
    
                CookieHeaderValue cookie = Request.Headers.GetCookies("session").FirstOrDefault();
                if (b && cookie != null)
                {
                    #region 方法一
                    string session = "";
    
                    if (cookie != null)
                    {
                        session = cookie["session"].Value;
                    }
    
                    return session;
    
                    #endregion
                }
                else if (!b && cookie != null)
                {
                    #region 方法二
                    string sessionId = "";
                    string sessionToken = "";
                    string theme = "";
                    if (cookie != null)
                    {
                        CookieState cookieState = cookie["session"];
    
                        sessionId = cookieState["sid"];
                        sessionToken = cookieState["token"];
                        theme = cookieState["theme"];
                    }
    
                    return sessionId;
    
                    #endregion
                }
    
                return "";
            }
    
            /// <summary>
            /// 删除Cookie
            /// </summary>
            /// <returns></returns>
            public CookieHeaderValue[] DeleteCookie(HttpRequestMessage Request)
            {
                var cookie = new CookieHeaderValue("session", "");
                cookie.Expires = DateTimeOffset.Now.AddDays(-10);//不设置时间,浏览器关闭自动清除
                cookie.Domain = Request.RequestUri.Host;
                cookie.Path = "/";
    
                return new CookieHeaderValue[] { cookie };
            }
    
    
        }
    }
     /// <summary>
            /// 用户登录生成cookie
            /// </summary>
            /// <param name="L"></param>
            /// <returns></returns>
            [HttpPost]
            [Route("PostLogin")]
            public HttpResponseMessage PostLogin(LoginInfo L)
            {
                var resp = new HttpResponseMessage();
    
                UserInfo u = new UserInfo();
                u = UserInfoAdapter.Instance.Login(L);
    
                if (u != null)
                {
                    resp.Content = new StringContent(JsonConvert.SerializeObject("Success"), Encoding.GetEncoding("UTF-8"), "application/json");
                    resp.Headers.AddCookies(CookieInfo.Instance.CookieSet(u, Request));
                    return resp;
                }
                else
                {
                    resp.Content = new StringContent(JsonConvert.SerializeObject("Failed"), Encoding.GetEncoding("UTF-8"), "application/json");
                }
                return resp;
            }
  • 相关阅读:
    判断一个图是否有环 无向图 有向图
    经典算法解析
    图的深度优先遍历DFS(邻接矩阵表示法)
    Prim算法求最小生成树MST以及和kruskal算法的对比
    oracle连接中出现错误ORA12541,ORA12514,ORA01017的解决方法
    visual studio 自动整理代码
    解决Google code和Google group无法登录的问题
    Dijkstra算法求单源最短路径(二)(BFS的改版)
    快速排序算法QuickSort
    推荐资料
  • 原文地址:https://www.cnblogs.com/fenger-VIP/p/14890157.html
Copyright © 2011-2022 走看看