我们开发了一个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()
{
............
............
}