بررسی روش دسترسی به HttpContext در ASP.NET Core
نویسنده: وحید نصیری
تاریخ: ۱۳۹۵/۰۹/۱۶ ۹:۳۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
} public IActionResult ProcessForm()
{
HttpContext.Items["firstname"] = "Vahid";
HttpContext.Items["lastname"] = "N.";
return View();
} public class MyHelperClass
{
private readonly IHttpContextAccessor _contextAccessor;
public MyHelperClass(IHttpContextAccessor contextAccessor)
{
_contextAccessor = contextAccessor;
}
public string DoWork()
{
string firstName = _contextAccessor.HttpContext.Items["firstname"].ToString();
string lastName = _contextAccessor.HttpContext.Items["lastname"].ToString();
return $"Hello {firstName} {lastName}!";
}
} public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddHttpContextAccessor();
} public static IServiceCollection AddHttpContextAccessor(this IServiceCollection services)
{
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
return services;
} public class BaseController : Controller
{
public CurrentUser CurrentUser;
private readonly IHttpContextAccessor _httpContextAccessor;
public BaseController() : base()
{
// در اینجا میخواهیم به مقدار HttpContext دسترسی پیداکنیم
}
} var serviceT = this.HttpContext.RequestServices.GetService<T>();
PM> Install-Package DNTCommon.Web.Core
public class MyBadType
{
private readonly HttpContext _context;
public MyBadType(IHttpContextAccessor accessor)
{
_context = accessor.HttpContext;
}
public void CheckAdmin()
{
if (!_context.User.IsInRole("admin"))
{
throw new UnauthorizedAccessException("The current user isn't an admin");
}
}
} public class MyGoodType
{
private readonly IHttpContextAccessor _accessor;
public MyGoodType(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
public void CheckAdmin()
{
var context = _accessor.HttpContext;
if (context != null && !context.User.IsInRole("admin"))
{
throw new UnauthorizedAccessException("The current user isn't an admin");
}
}
}