.NET Core jQuery Cookie Session 操作

1、jQuery 可以通过 jquery.cookie.js 插件来操作 Cookie
2、.NET Core 3.1 Cookies 操作
3、.NET Core 3.1 API Session 操作
4、.NET Core 3.1 MVC Session 操作

官方地址
Github 地址

使用 jquery.cookie.js 之前需要先引入 jQuery:

<script src="/path/to/jquery.min.js"></script>
<script src="/path/to/jquery.cookie.js"></script>

我们可以使用第三方资源库引入这两个文件:

<script src="https://cdn.staticfile.org/jquery/3.4.0/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

完整代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="lib/jquery/dist/jquery.js"></script>
    <script src="js/jquery.cookie.js"></script>
</head>
<body>
    <input id="btnShow" type="button" value="创建cookie" />
    <input id="btnLogin" type="button" value="获取cookie" />
    <input id="btnLoginCors" type="button" value="删除cookie" />
    <script>
        $("#btnShow").click(function () {
            var time = new Date();

            var year = time.getFullYear();
            var month = time.getMonth();
            var day = time.getDate();

            var hour = time.getHours();
            var minute = time.getMinutes();
            var second = time.getSeconds();

            var time_stamp = hour.toString() + minute.toString() + second.toString();

            console.log("123a【" + hour + ":" + minute + ":" + second + "】");

            $.cookie('username', 'liudehua');

            $.cookie('password', 'abcd123456', { expires: 7 });

            $.cookie('age', '100', { expires: 7, path: '/' });

            $.cookie('time', time_stamp);

        });

        $("#btnLogin").click(function () {
            console.log("123b【" + $.cookie('username') + "】");

            console.log("所有cookie【" + JSON.stringify($.cookie()) + "】");
        });

        $("#btnLoginCors").click(function () {
            $.removeCookie('username');

            $.removeCookie('age', { path: '/' }); // => true

            console.log("123c")
        });
    </script>
</body>
</html>

--------------------------------------------- .NET Core 3.1 Cookies ---------------------------------------------
.NET Core 3.1 设置Cookies

--方式1
HttpContext.Response.Cookies.Append("UserName", "超人");

--方式2
HttpContext.Response.Cookies.Append("password","123456",
    new CookieOptions
    {
        Expires = DateTime.Now.AddDays(1)
    });

--方式3
CookieOptions options = new CookieOptions();
options.Expires = DateTime.Now.AddDays(1);
HttpContext.Response.Cookies.Append("password", "123456", options);

.NET Core 3.1 获取Cookies

string value = "";
HttpContext.Request.Cookies.TryGetValue("password", out value);
 
string auth = "";
HttpContext.Request.Cookies.TryGetValue("AuthCookie", out auth);
 
var sid = HttpContext.User.FindFirst(ClaimTypes.Sid);
var userName = HttpContext.User.Claims.First().Value;
var adminAccount = HttpContext.User.Claims.SingleOrDefault(t => t.Type == "UserName");
string account = adminAccount == null ? "" : adminAccount.Value;
 
if (HttpContext.User.Identity.IsAuthenticated)
{
    var uName = HttpContext.User.Claims.First().Value;
}
else
{
    string a = "";
}

.NET Core 3.1 删除Cookies

HttpContext.Response.Cookies.Delete("password");

--------------------------------------------- .NET Core 3.1 API Session ---------------------------------------------
1、Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    #region session
    services.AddDistributedMemoryCache();
    services.AddSession();
    //services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    //services.AddHttpContextAccessor();
    #endregion
    services.AddControllers();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseSession();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

2、WeatherForecastController.cs

[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
    #region session
    HttpContext.Session.SetString("abcd", "12345678");
    var value = HttpContext.Session.GetString("abcd");
    #endregion
}

--------------------------------------------- .NET Core 3.1 MVC Session ---------------------------------------------
1、Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddSession();
    services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseSession();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}

2、HomeController.cs

public IActionResult Index()
{
    HttpContext.Session.SetString("abc", "123");
    var value = HttpContext.Session.GetString("abc");
    return View();
}

 

.NET Core中使用Session通常涉及以下步骤: 1. 安装Session服务:在.NET Core应用程序中,首先需要安装Session相关的NuGet包,例如`Microsoft.AspNetCore.Session`。 2. 在Startup.cs中配置服务:在`Startup`类的`ConfigureServices`方法中,添加Session服务到服务集合中。这通常是通过调用`AddSession`方法实现的。 ```csharp public void ConfigureServices(IServiceCollection services) { services.AddSession(options => { options.IdleTimeout = TimeSpan.FromSeconds(10); // 设置Session的过期时间 options.Cookie.HttpOnly = true; // 禁止客户端脚本访问Cookie options.Cookie.IsEssential = true; // 将Session Cookie标记为必须,以满足某些合规性要求 }); } ``` 3. 在Startup.cs中启用中间件:在`Startup`类的`Configure`方法中,添加Session中间件,通常是在配置中间件管线时,将`UseSession()`放置在`UseRouting()`之后,`UseEndpoints()`之前。 ```csharp public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseSession(); // 启用Session中间件 // 其他中间件配置... } ``` 4. 存储和检索Session数据:一旦Session配置完成,就可以在控制器或页面模型中使用`HttpContext.Session`来存储和检索数据。 ```csharp public IActionResult AddToSession(string key, string value) { HttpContext.Session.SetString(key, value); return RedirectToAction("Index"); } public IActionResult GetFromSession(string key) { string value = HttpContext.Session.GetString(key); return Content($"The value is: {value}"); } ``` 在.NET Core中,Session可以用来存储用户特定的数据,以便在整个用户会话期间保持状态。需要注意的是,在分布式或负载均衡的环境中使用Session,可能还需要额外的配置来确保Session的存储和检索是一致的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值