WCF-在身份验证后保留自定义数据

本文关键字:自定义 数据 保留 身份验证 WCF- | 更新日期: 2023-09-27 18:26:36

我使用自定义用户名/密码验证器。我必须创建一个依赖于用户名/密码的特殊对象。此对象将在以后的服务中使用。验证器看起来像:

public class CustomUserNamePasswordValidator: UserNamePasswordValidator
{
    public override void Validate(string userName, string password)
    {
        if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
        {
            throw new ArgumentNullException();
        }
        try
        {
            var session = new Session(userName, password);
        }
        catch(Exception)
        {
            throw new SecurityTokenException("Unknown Username or Password");
        }
    }
}

会话是我自己的类型。我尝试通过网络服务提供对另一个API的网络访问。认为每个API调用都应该提供会话对象。我可以保留会话对象以便在服务方法中使用它们吗?应该为每个服务实例(每个调用或每个会话)定义此对象。在会话类型实现IDisposable的情况下,最好的方法是什么?非常感谢。

WCF-在身份验证后保留自定义数据

好的。如果您希望为WCF服务的每个实例都拥有会话对象,则可以在WCF服务的构造函数中创建此会话对象。每个方法都将通过实例字段访问会话对象,每个方法都可以通过OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name属性访问用户名。当然,方法将无法访问密码。