Denetleyicilerimin her eyleminde yapılandırmak için bir izin özniteliği oluşturmaya çalışıyorum, bu nedenle bu özel öznitelik, sessionId öğesini kullanıcıdan almalıdır. Kodum böyledir: BuHttpActionContext'den oturum alın
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(filterContext.HttpContext.Session != null)
{
var id = filterContext.HttpContext.Session["Id"];
}
}
DÜZENLEME MVC'yi 4 kullandığınız gerçeğini göz önüne alındığında ve
public override void OnActionExecuting(ActionExecutingContext filterContext)
yok
public class PermissionChecker: ActionFilterAttribute
{
private int _permissionId { get; set; }
private IUserSelectorService _userService { get; set; }
public PermissionChecker(int permissionId)
{
_permissionId = permissionId;
_userService = new UserSelectorService();
}
public PermissionChecker(int permissionId, IUserSelectorService userService)
{
_permissionId = permissionId;
_userService = userService;
}
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (_userService.HasPermission(_permissionId, /* here I must pass the session["Id"]*/)){
base.OnActionExecuting(actionContext);
return;
}
throw new HttpException(401, "Unauthorized");
}
}
MVC4 kullanıyorum, bu nedenle ActionExecutingContext – MuriloKunze
Ok ile geçersiz kılma yok. Ben actionContext Session – Mihai
Evet erişmenize izin verecek bir özellik HttpContext yok varsayalım, yok. – MuriloKunze