مدیریت سشنها در برنامههای وب به کمک تزریق وابستگیها
نویسنده: وحید نصیری
تاریخ: ۱۳۹۳/۱۲/۱۰ ۱۰:۴۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public interface ISessionProvider
{
object Get(string key);
T Get<T>(string key) where T : class;
void Remove(string key);
void RemoveAll();
void Store(string key, object value);
} public class DefaultWebSessionProvider : ISessionProvider
{
private readonly HttpSessionStateBase _session;
public DefaultWebSessionProvider(HttpSessionStateBase session)
{
_session = session;
}
public object Get(string key)
{
return _session[key];
}
public T Get<T>(string key) where T : class
{
return _session[key] as T;
}
public void Remove(string key)
{
_session.Remove(key);
}
public void RemoveAll()
{
_session.RemoveAll();
}
public void Store(string key, object value)
{
_session[key] = value;
}
} private static Container defaultContainer()
{
return new Container(ioc =>
{
// session manager setup
ioc.For<ISessionProvider>().Use<DefaultWebSessionProvider>();
ioc.For<HttpSessionStateBase>()
.Use(ctx => new HttpSessionStateWrapper(HttpContext.Current.Session));
ioc.Policies.SetAllProperties(properties =>
{
properties.OfType<ISessionProvider>();
});
});
} public class HomeController : Controller
{
private readonly ISessionProvider _sessionProvider;
public HomeController(ISessionProvider sessionProvider)
{
_sessionProvider = sessionProvider;
} ioc.For<IIdentity>().Use(() => HttpContext.Current.User.Identity); ioc.For<HttpContextBase>().Use(() => new HttpContextWrapper(HttpContext.Current)); ioc.For<HttpServerUtilityBase>().Use(() => new HttpServerUtilityWrapper(HttpContext.Current.Server)); ioc.For<HttpRequestBase>().Use(ctx => ctx.GetInstance<HttpContextBase>().Request);