• 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;
            }
  • 相关阅读:
    十八、mysql 流程控制结构
    十七、mysql 函数
    2.Hibernate批量删除的两种方式
    1.Hibernate比较数字
    1.java.IO.File中与系统相关的静态字段如:“/”
    1.彻底解决Springmvc中文乱码问题
    仿京东导航栏CSS练习
    定位position介绍
    超过固定宽度用...表示
    图标字体和@fontface的用法
  • 原文地址:https://www.cnblogs.com/fenger-VIP/p/14890157.html
Copyright © 2020-2023  润新知