我想使用Session属性(Session [“ isAdmin”])来确定用户是否应该能够查看Hangfire仪表板。
问题是当我使用时
HttpContext.Current.Session
这是空的-即使我在其他有数据的页面上使用此属性。
我在下面的代码段中苦苦挣扎。
我想让管理员角色查看页面。
public class AuthorizationFilter : IDashboardAuthorizationFilter
{
public bool Authorize(DashboardContext context)
{
var session = HttpContext.Current.Session;
if (session == null ||
session["username"] == null ||
FindUserRole(session["username"].ToString()) !=
"ADMIN")
{
return false;
}
return true;
}
}
还有其他方法可以使我更轻松吗?
答案 0 :(得分:0)
要获取上下文,您应该使用提供的参数。这样的事情应该是您所追求的:
public class HangfireAuthorization : IDashboardAuthorizationFilter
{
public bool Authorize([NotNull] DashboardContext currentContext)
{
return Boolean.Parse(currentContext.GetHttpContext().Session.GetString("isAdmin"));
}
}
答案 1 :(得分:0)
您可以像这样使用。不要忘记会话有有限的时间到期。
public class HangfireAuthorizationFilter : IDashboardAuthorizationFilter
{
public object session;
public bool Authorize(DashboardContext context)
{
var sessionToCheck = System.Web.HttpContext.Current.Session?[YourSessionKeyHere];
if (sessionToCheck != null)
{
session= sessionToCheck;
return true;
}
else if (session != null)
{
return true;
}
else
{
return false;
}
}
}