C# 在asp.net core中实现基于策略的角色授权时随机会话过期
我们开发了一个ASP.NET核心Web应用程序,它在本地和服务器上都运行良好 在实现基于自定义策略的角色授权时,如果我已在服务器上上载了dll代码,则会话将在超时之前过期&用户将重定向到登录页面 我不知道在实现自定义策略授权时,是什么原因导致会话这么快过期。我的观点是,应用程序在没有实现基于角色的授权的情况下可以很好地处理会话 我从redis获得了会话和用户角色C# 在asp.net core中实现基于策略的角色授权时随机会话过期,c#,.net,session,asp.net-core,C#,.net,Session,Asp.net Core,我们开发了一个ASP.NET核心Web应用程序,它在本地和服务器上都运行良好 在实现基于自定义策略的角色授权时,如果我已在服务器上上载了dll代码,则会话将在超时之前过期&用户将重定向到登录页面 我不知道在实现自定义策略授权时,是什么原因导致会话这么快过期。我的观点是,应用程序在没有实现基于角色的授权的情况下可以很好地处理会话 我从redis获得了会话和用户角色 protected override Task HandleRequirementAsync(AuthorizationHandler
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()
{
............
............
}
protected override Task HandleRequirementAsync(授权handler上下文,角色需求)
{
RedisConnection redis=新的RedisConnection();
if(SessionId==null | SessionId==string.Empty)
{
context.Fail();
}
其他的
{
字符串MemberDetails=redis.GetMemberSession(SessionId);
RedisModel SessionDetails=JsonConvert.DeserializeObject(详细信息);
Role=SessionDetails.UserRoleLevel.ToUpper().Trim();
交换机(需求.角色)
{
case.MEMBER:
if(角色==需求.角色)
{
成功(要求);
}
打破
case.PROVIDER:
if(角色==需求.角色)
{
成功(要求);
}
打破
case.ADMIN:
if(角色==需求.角色)
{
成功(要求);
}
打破
[HttpGet(“nname”)]
[授权(Policy=“ADMIN”)]
[服务过滤器(类型(过滤器))]
公共IActionResult NName()
{
............
............
}
您在代码中设置了什么身份验证会话过期时间?实际过期时间是什么?身份验证会话过期时间是2小时。每次的实际过期时间都不同。它将在5或10分钟后过期,依此类推。您可以分享一些实现的代码片段吗?我想问题可能出在IIS上。但我不确定。