使用Hangfire资讯主页时进行工作阶段验证

时间:2019-07-16 12:05:17

标签: c# asp.net hangfire

我想使用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;
        }
    }

还有其他方法可以使我更轻松吗?

2 个答案:

答案 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;
        }
    }
}