在 ASP.NET MVC 中添加 Cookie 集合
Add Collection of Cookie in ASP.NET MVC
如何在 ASP.NET MVC 中添加 cookie 集合?
通常,我使用这个代码:
[HttpPost]
public ActionResult AddCookie()
{
Response.Cookies["Profile"]["Test1"] = "Something1";
Response.Cookies["Profile"]["Test2"] = "Something2";
Response.Cookies["Profile"]["Test3"] = "Something3";
return RedirectToAction("Index", "Home");
}
但是有没有更快的方法呢?
例如使用NameValueCollection
:
var nv = new NameValueCollection();
nv["Test1"] = "Something1";
nv["Test2"] = "Something2";
nv["Test3"] = "Something3";
// add Profile cookie here with nv values
您可以使用 JSON 而不是不同的键值:
假设您有一个 FooStorage
class,如下所示:
public class FooStorage
{
public int SomeInteger { get; set; }
public string? SomeString { get; set; }
public List<string>? SomeMoreString { get; set; }
}
现在您可以在上述 class 的实例中存储您需要的任何数据(您也应该考虑安全性)。
例如:
var fooAsJSON = JsonSerializer.Serialize(new FooStorage
{
SomeInteger = 1,
SomeString = "Foo",
SomeMoreString = new List<string>
{
"Foo1","Foo2","Foo3","a Long Long Long Foo",
}
});
// Store your fooAsJSON in the cookie and then use it.
var another = JsonSerializer.Deserialize<FooStorage>(fooAsJSON);
但是,就安全性而言,您不应该太相信 cookie。
消费者更改和操纵 cookie 很简单,您可能不希望对每个请求收取任何重大基础设施成本。
我认为将其缓存在服务器上是一个更好的解决方案。
注意:您需要using System.Text.Json;
才能使用JsonSerializer
这是你想要的吗?
public ActionResult Index()
{
HttpCookie testCookie = new HttpCookie("test");
testCookie["name"] = "user1";
testCookie["age"] = "18";
testCookie.Expires.Add(new TimeSpan(0, 1, 0));
Response.Cookies.Add(testCookie);
return View();
}
如何在 ASP.NET MVC 中添加 cookie 集合?
通常,我使用这个代码:
[HttpPost]
public ActionResult AddCookie()
{
Response.Cookies["Profile"]["Test1"] = "Something1";
Response.Cookies["Profile"]["Test2"] = "Something2";
Response.Cookies["Profile"]["Test3"] = "Something3";
return RedirectToAction("Index", "Home");
}
但是有没有更快的方法呢?
例如使用NameValueCollection
:
var nv = new NameValueCollection();
nv["Test1"] = "Something1";
nv["Test2"] = "Something2";
nv["Test3"] = "Something3";
// add Profile cookie here with nv values
您可以使用 JSON 而不是不同的键值:
假设您有一个 FooStorage
class,如下所示:
public class FooStorage
{
public int SomeInteger { get; set; }
public string? SomeString { get; set; }
public List<string>? SomeMoreString { get; set; }
}
现在您可以在上述 class 的实例中存储您需要的任何数据(您也应该考虑安全性)。
例如:
var fooAsJSON = JsonSerializer.Serialize(new FooStorage
{
SomeInteger = 1,
SomeString = "Foo",
SomeMoreString = new List<string>
{
"Foo1","Foo2","Foo3","a Long Long Long Foo",
}
});
// Store your fooAsJSON in the cookie and then use it.
var another = JsonSerializer.Deserialize<FooStorage>(fooAsJSON);
但是,就安全性而言,您不应该太相信 cookie。 消费者更改和操纵 cookie 很简单,您可能不希望对每个请求收取任何重大基础设施成本。
我认为将其缓存在服务器上是一个更好的解决方案。
注意:您需要using System.Text.Json;
才能使用JsonSerializer
这是你想要的吗?
public ActionResult Index()
{
HttpCookie testCookie = new HttpCookie("test");
testCookie["name"] = "user1";
testCookie["age"] = "18";
testCookie.Expires.Add(new TimeSpan(0, 1, 0));
Response.Cookies.Add(testCookie);
return View();
}