【问题标题】:What's the equivalent of HttpContext.Current.User in an HttpListener-hosted service?HttpListener 托管服务中 HttpContext.Current.User 的等价物是什么?
【发布时间】:2013-09-07 23:52:35
【问题描述】:

我为 ServiceStack 编写了一个自定义属性,其中包含以下代码:

public override void Execute(IHttpRequest request, IHttpResponse response, object requestDto) {
    HttpContext.Current.User = GetUserFromOAuth2BearerToken(request);
}

这在 IIS 中托管时效果很好,但在使用内置 HttpListener 主机时,HttpContext.Current 返回null

在使用 HttpListener 时,设置和获取与当前请求/响应关联的安全主体的正确语法是什么?

【问题讨论】:

    标签: servicestack httpcontext httplistener httplistenerrequest


    【解决方案1】:

    当使用AppHostHttpListenerBase 时,我不确定“安全主体/System.Security.Principal”是否可用于当前请求/响应。

    你可以拉取用户信息做类似的事情......

    var sessionId = request.Cookies["ss-id"].ToString();
    var user = request.GetCacheClient().Get<AuthUserSession>(sessionId);
    

    【讨论】:

    • 好主意,但我使用的是 OAuth2 授权,它是无状态的,因此没有会​​话 cookie 或用户会话的概念......在分配当前 HTTP 上下文的方法上有一个自定义属性基于 OAuth2 不记名令牌的主体。我也许可以使用 System.Threading 来做到这一点,但我不想......
    猜你喜欢
    • 1970-01-01
    • 2017-05-01
    • 2013-06-16
    • 2022-07-27
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多