gpt4 book ai didi

c# - 如何在 Windows 上运行的自托管 ServiceStack 中获取用户名

转载 作者:行者123 更新时间:2023-11-30 17:53:51 24 4
gpt4 key购买 nike

我正在构建一个 Windows 服务,我没有公开 WCF 或 .Net 远程处理接口(interface),而是尝试了 ServiceStack。 (到目前为止,我正在挖掘它!)

我需要获取调用该服务的用户的用户名。用户已经通过 Active Directory 的身份验证,因此我不希望他们看到任何额外的屏幕。

该服务将由 Winforms 应用程序调用,因此我可以传递用户名,但这可能被欺骗

有什么想法吗?

最佳答案

好吧,基本上这是 ServiceStack 不支持的。但是你可以通过这样做来获取用户名。

namespace ServiceStackNTML
{
using ServiceStack.Common;
using ServiceStack.ServiceHost;
using ServiceStack.ServiceInterface;
using ServiceStack.WebHost.Endpoints;
using System;
using System.Net;

class Program
{
static void Main(string[] args)
{
var host = new NTMLAppHost();
host.Init();
host.Start("http://localhost:8080/");

Console.ReadLine();
}
}

class NTMLAppHost : AppHostHttpListenerBase
{
public NTMLAppHost() : base("Test", typeof(NTMLAppHost).Assembly) { }

public override void Configure(Funq.Container container)
{

}

public override void Start(string urlBase)
{
base.Start(urlBase);
this.Listener.AuthenticationSchemes = System.Net.AuthenticationSchemes.Ntlm;
}

protected override void ProcessRequest(HttpListenerContext context)
{
HostContext.Instance.Items["User"] = context.User;
base.ProcessRequest(context);
}
}

class TestService : Service
{
public string Any(UsernameRequest request)
{
return ((System.Security.Principal.IPrincipal)HostContext.Instance.Items["User"]).Identity.Name;
}
}

[Route("/Username")]
class UsernameRequest : IReturn<string>
{

}
}

关于c# - 如何在 Windows 上运行的自托管 ServiceStack 中获取用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com