ServiceStack RequiredRole正在将我的到期(生存时间)重置为2周
本文关键字:时间 2周 RequiredRole 我的 ServiceStack | 更新日期: 2023-09-27 18:15:40
我使用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
};
}
我最初将SessionExpiry
设置在自定义CredentialsAuthProvider
类的OnAuthenticated
中,并且不要手动更改SessionExpiry
在应用程序中的任何其他地方(此时没有滑动会话过期-双关语)。
任何帮助都将非常感激!
每次会话保存时,它都会再次保存默认的会话过期,您可以在顶级AuthFeature.SessionExpiry
中指定临时会话或AuthFeature.PermanentSessionExpiry
中指定永久(记住我)会话。
你也可以截取每次会话保存的时间,并通过在AppHost中重写OnSaveSession
来更改会话过期保存的时间:
public override void OnSaveSession(
IRequest httpReq, IAuthSession session, TimeSpan? expiresIn = null)
{
var customExpiry = ...
base.OnSaveSession(httpReq, session, customExpiry);
}