ASP.NET Session State Provider da Redis Cache kullanımı yapılandıracağım.
İzlenecek adımlar web.config dosyasını düzenlemek, oturum yardımcı sınıfını oluşturmak ve ASP.NET Identity SignInManager’ı özelleştirmektir.
Web.config yapılandırması çok basit:
<system.web> <sessionState mode="Custom" customProvider="RedisSessionProvider"> <providers> <add name="RedisSessionProvider" type="Microsoft.Web.Redis.RedisSessionStateProvider" port="6380" host="" accessKey="" ssl="true" /> </providers> </sessionState> </system.web>
Ardından, sonraki adım, oturum özelliklerini içeren oturum yardımcı sınıfını uygulamaktır:
public static class ApplicationSession
{
private static string _userName = "userName";
private static string _email = "email";
private static string _loginDate = "loginDate";
public static void Init(string userName, string email)
{
Set(_userName, userName);
Set(_email, email);
Set(_loginDate, DateTime.Now);
}
public static string UserName
{
get
{
return Get<string>(_userName);
}
set
{
Set(_userName, value);
}
}
public static string Email
{
get
{
return Get<string>(_email);
}
set
{
Set(_email, value);
}
}
public static DateTime StartDate
{
get
{
return Get<DateTime>(_loginDate);
}
set
{
Set(_loginDate, value);
}
}
private static T Get<T>(string key)
{
return (T) HttpContext.Current.Session[key];
}
private static void Set(string key, object value)
{
HttpContext.Current.Session[key] = value;
}
}
Son olarak, ASP.NET Identity SignInManager aracılığıyla oturum verilerinin başlatılması.
ApplicationSignInManager sınıfının PasswordSignInAsync yöntemini geçersiz kılmak gerekir:
public class ApplicationSignInManager : SignInManager<ApplicationUser, string>
{
public override Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
Task<SignInStatus> status = base.PasswordSignInAsync(userName, password, isPersistent, shouldLockout);
if (status.Result == SignInStatus.Success)
{
ApplicationUser user = UserManager.FindByName(userName);
ApplicationSession.Init(user.UserName, user.Email);
}
return status;
}
}
Kodmatik Murat BEKLER | Donanıma can veren ruh, yazılımdır.