c# - 我可以从服务堆栈中的自定义用户 session 中访问 Web 服务吗?

标签 c# authentication servicestack

我有标准的 Hello World Web 服务和我的自定义用户身份验证 session ,因为我需要一些额外的参数。身份验证部分按预期工作。下面是我的 CustomUserSession:

public class CustomUserSession : AuthUserSession
{
    public int? PortalId { get; set; }

    public override void OnAuthenticated(ServiceInterface.IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo)
    {
        base.OnAuthenticated(authService, session, tokens, authInfo);
        var refId = session.UserAuthId;

        var userRep = new InMemoryAuthRepository();
        var userAuth = userRep.GetUserAuth(refId.ToString());
        PortalId = userAuth.RefId;
    }
}

我的 refId 包含来 self 的其他表之一的自定义参数,并且在我调试时它获得了正确的值。我的问题是,我现在可以从这个方法中调用 web 服务的方法吗?因此,例如,如果我有一个接受 int 的执行方法,我可以从覆盖的 OnAuthenticated 方法中调用它吗?

最佳答案

您可以使用 ResolveService<T> 在 ServiceStack 中执行服务.

从自定义用户 session 中:

using (var service = authService.ResolveService<MyService>())
{
    var response = service.Get(new MyRequest { ... });
}

从 ServiceStack 服务内部:

using (var service = base.ResolveService<MyService>())
{
    var response = service.Get(new MyRequest { ... });
}

从 ServiceStack 外部:

using (var service = HostContext.ResolveService<MyService>())
{
    var response = service.Get(new MyRequest { ... });
}

关于c# - 我可以从服务堆栈中的自定义用户 session 中访问 Web 服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14819069/

相关文章:

c# - 在 EF Core 数据库上使用复合主键拆分表

c# - Entity Framework 代码优先 : Doesn't load referenced object

c# - 如何返回两个日期之间的周末日期列表

swift - 使用swift 4自动登录网页

mono - 服务栈 : fastcgi-mono-server4 vs self-hosting

c# - UWP 页面导航标识符

c# - 使用在锁定工作站上打开的应用程序登录 Windows 7

authentication - 如何在phoenix中实现用户认证

c# - ServiceStack JSONSerializer 和 HashSet<x>

c# - 无法加载文件或程序集 'ServiceStack' 或其依赖项之一。该系统找不到指定的文件