在asp.net核心中实现基于策略的角色授权时的随机会话到期

时间:2017-03-02 05:39:24

标签: c# .net session asp.net-core

我们开发了一个ASP.NET Core Web应用程序,它在本地和服务器上都运行良好。

实施基于自定义策略的角色授权时,如果我已在服务器上上传dll代码,则会话在超时之前到期&用户被重定向到登录页面

在实施自定义策略授权时,我不知道会话过期的原因。我的观点是,Application在没有实现基于角色的授权的情况下适用于会话。

我从redis获得了用户的会话和角色。

protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, RoleRequirement requirement)
    {
        RedisConnection redis = new RedisConnection();
        if (SessionId == null | SessionId == string.Empty)
        {
            context.Fail();
        }
        else
        {
            string MemberDetails = redis.GetMemberSession(SessionId);
            RedisModel SessionDetails = JsonConvert.DeserializeObject<RedisModel>(Details);
            Role = SessionDetails.UserRoleLevel.ToUpper().Trim();

            switch (requirement.Roles)
            {
                case Constants.MEMBER:
                    if (Role == requirement.Roles)
                    {
                        context.Succeed(requirement);
                    }
                    break;
                case Constants.PROVIDER:
                    if (Role == requirement.Roles)
                    {
                        context.Succeed(requirement);
                    }
                    break;
                case Constants.ADMIN:
                    if (Role == requirement.Roles)
                    {
                        context.Succeed(requirement);
                    }
                    break;








    [HttpGet("nname")]
    [Authorize(Policy = "ADMIN")]
    [ServiceFilter(typeof(Filter))]
    public IActionResult NName()
    {
        ............
        ............
    }

0 个答案:

没有答案