Net Core 中WebAPI有關 Session的設置


原文地址:https://www.cnblogs.com/for-easy-fast/p/12157664.html

Net Core 中WebAPI有關 Session的設置,及獲取
步驟一: 在Startup 文件中做相應的設置

ConfigureServices方法里添加

//ConfigureServices添加:

services.AddSession(options =>
{
options.Cookie.Name = ".AdventureWorks.Session";
options.IdleTimeout = System.TimeSpan.FromSeconds(120);//設置session的過期時間
options.Cookie.HttpOnly = true;//設置在瀏覽器不能通過js獲得該cookie的值
});
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddHttpContextAccessor();
#region 跨域
services.AddCors(options =>
options.AddPolicy("AllowSameDomain",
builder => builder.WithOrigins().AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));
#endregion
//HttpContextAccessor 默認實現了它簡化了訪問HttpContext
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

Configure方法里面添加

app.UseSession();//UseSession配置在UseMvc之前
二 在具體的Control配置相應數據

  1. 配置 並獲取httpcontext

示例:

public class HomeController : Controller
{
private IHttpContextAccessor _accessor;
public HomeController(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
public IActionResult Index()
{
var httpcontext = _accessor.HttpContext;
return View();
}
}

  1. 寫SessionHelper類

    public class SessionHelper
    {
    private IHttpContextAccessor _accessor;

    private ISession _session ;
    private IRequestCookieCollection _requestCookie ;
    private IResponseCookies _responseCookie;
    public SessionHelper(HttpContext context)
    {
        _session = context.Session;
        _requestCookie = context.Request.Cookies;
        _responseCookie = context.Response.Cookies;
    }
    /// <summary>
    /// 設置session值
    /// </summary>
    /// <param name="session"></param>
    /// <param name="key">鍵</param>
    /// <param name="value">值</param>
    public  void SetSession(string key, string value)
    {
        var bytes = System.Text.Encoding.UTF8.GetBytes(value);
        _session.Set(key, bytes);
    }
    /// <summary>
    /// 獲取Session值
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public  string GetSession(string key)
    {
        Byte[] bytes;
        _session.TryGetValue(key, out bytes);
        var value = System.Text.Encoding.UTF8.GetString(bytes);
    
        if (string.IsNullOrEmpty(value))
        {
            value = string.Empty;
        }
        return value;
    }
    ///// <summary>
    ///// 設置本地cookie
    ///// </summary>
    ///// <param name="key">鍵</param>
    ///// <param name="value">值</param>
    ///// <param name="minutes">過期時間</param>
    //public void SetCookies(string key,string value,int day = 1)
    //{
    //    _responseCookie.Append(key, value, new CookieOptions
    //    {
    //        Expires = DateTime.Now.AddDays(day)
    //    }) ;
    //}
    //public void  DeleteCookies(string key)
    //{
    //    _responseCookie.Delete(key);
    //}
    //public string GetCookiesValue(string key)
    //{
    //    _requestCookie.TryGetValue(key, out string value);
    //    if (string.IsNullOrEmpty(value))
    //    {
    //        value = string.Empty;
    //    }
    //    return value;
    //}
    

    }

  2. 方法里調用sessionHelper

                var httpContext = _accessor.HttpContext;
                SessionHelper session = new SessionHelper(httpContext);
                string key = "王明";
                string value = "2020年 大運年";
                //設置session值
                session.SetSession(key, value);
                //獲取session值
                session.GetSession(key);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM