ServiceStack RequiredRole 正在将我的到期(生存时间)重置为 2 周
ServiceStack RequiredRole is resetting my expiry (time to live) to 2 weeks
我正在使用 ServiceStack 和 Redis 来存储会话。会话过期是基于每个用户设置的。对于这些特定的服务方法,一切都运行良好,当我使用 [RequiredRole(Roles.Admin)]
时,这些方法的副作用是将 TTL(生存时间)更改回默认的 2 周,但仅使用 [Authenticate]
没问题。
using Repositories.DTO;
using ServiceStack;
using ServiceStack.Auth;
namespace WebApi.Controllers
{
public class RegistrationService : RegisterService
{
private readonly RegistrationRepo _repo;
public RegistrationService(RegistrationRepo repo)
{
_repo = repo;
}
[Authenticate] // No problems
public object Put(RegistrationRequest registration)
{
var result = _repo.UpdateUser(registration.user);
return new
{
user = result
};
}
[Authenticate]
[RequiredRole(Roles.Admin)] //Problems. Expiry resets to 2 weeks
public object Post(RegistrationRequest registration)
{
var result = _repo.UpdateUser(registration.user);
return new
{
user = result
};
}
我最初在自定义 CredentialsAuthProvider
class 的 OnAuthenticated
中设置了 SessionExpiry
,并且没有在任何其他地方手动更改 SessionExpiry
在应用程序中(目前没有 sliding session expirations - 双关语)。
如有任何帮助,我们将不胜感激!
每次保存会话时,它都会使用默认会话到期时间再次保存,您可以在顶层为临时会话指定 AuthFeature.SessionExpiry
或为永久(记住我)会话指定 AuthFeature.PermanentSessionExpiry
。
您还可以在每次保存 Session 时进行拦截,并通过覆盖 AppHost 中的 OnSaveSession
来更改保存的 Session Expiry:
public override void OnSaveSession(
IRequest httpReq, IAuthSession session, TimeSpan? expiresIn = null)
{
var customExpiry = ...
base.OnSaveSession(httpReq, session, customExpiry);
}
我正在使用 ServiceStack 和 Redis 来存储会话。会话过期是基于每个用户设置的。对于这些特定的服务方法,一切都运行良好,当我使用 [RequiredRole(Roles.Admin)]
时,这些方法的副作用是将 TTL(生存时间)更改回默认的 2 周,但仅使用 [Authenticate]
没问题。
using Repositories.DTO;
using ServiceStack;
using ServiceStack.Auth;
namespace WebApi.Controllers
{
public class RegistrationService : RegisterService
{
private readonly RegistrationRepo _repo;
public RegistrationService(RegistrationRepo repo)
{
_repo = repo;
}
[Authenticate] // No problems
public object Put(RegistrationRequest registration)
{
var result = _repo.UpdateUser(registration.user);
return new
{
user = result
};
}
[Authenticate]
[RequiredRole(Roles.Admin)] //Problems. Expiry resets to 2 weeks
public object Post(RegistrationRequest registration)
{
var result = _repo.UpdateUser(registration.user);
return new
{
user = result
};
}
我最初在自定义 CredentialsAuthProvider
class 的 OnAuthenticated
中设置了 SessionExpiry
,并且没有在任何其他地方手动更改 SessionExpiry
在应用程序中(目前没有 sliding session expirations - 双关语)。
如有任何帮助,我们将不胜感激!
每次保存会话时,它都会使用默认会话到期时间再次保存,您可以在顶层为临时会话指定 AuthFeature.SessionExpiry
或为永久(记住我)会话指定 AuthFeature.PermanentSessionExpiry
。
您还可以在每次保存 Session 时进行拦截,并通过覆盖 AppHost 中的 OnSaveSession
来更改保存的 Session Expiry:
public override void OnSaveSession(
IRequest httpReq, IAuthSession session, TimeSpan? expiresIn = null)
{
var customExpiry = ...
base.OnSaveSession(httpReq, session, customExpiry);
}