ASP.NET/ASP.NET Core
[ASP.Net Core] Session 객체 Custom 하기
http://portfolio.wonpaper.net
2023. 2. 10. 10:48
https://learn.microsoft.com/ko-kr/aspnet/core/fundamentals/app-state?view=aspnetcore-6.0
간단히 세션 정리하면 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// Controller 에서 세션굽기
HttpContext.Session.SetString("id", "test");
HttpContext.Session.SetString("name", "홍길동");
// 모든 세션 삭제
HttpContext.Session.Clear();
// View 에서 세션 불러오기
@using Microsoft.AspNetCore.Http;
Context.Session.GetString("id")
Context.Session.GetString("name")
|
cs |
위와같이 단일값 형태로 string 형으로 굽고 불러오고 하지 않고, 객체 형태로 세션을 굽고 활용하는 방법을 알아 보자.
다음의 별도의 SessionHelper 클래스를 만들어 활용해 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestProgram.Api.Lib
{
public static class SessionHelper
{
public static void SetObjectAsJson(this ISession session, string key, object value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T? GetObjectFromJson<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
}
}
/*
using Microsoft.AspNetCore.Http;
Product product = new Product
{
Id = "p01",
Name = "Name 1",
Price = 5
};
SessionHelper.SetObjectAsJson(HttpContext.Session, "product", product);
List<Product> products = new List<Product>() {
new Product {
Id = "p01",
Name = "Name 1",
Price = 5
},
new Product {
Id = "p02",
Name = "Name 2",
Price = 9
},
new Product {
Id = "p03",
Name = "Name 3",
Price = 2
}
};
SessionHelper.SetObjectAsJson(HttpContext.Session, "products", products);
*/
//Product product = SessionHelper.GetObjectFromJson<Product>(Context.Session, "product");
//List<Product> products = SessionHelper.GetObjectFromJson<List<Product>>(Context.Session, "products");
}
|
cs |