首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >覆盖IAuthSession OnRegistered处理程序

覆盖IAuthSession OnRegistered处理程序
EN

Stack Overflow用户
提问于 2013-03-20 01:48:50
回答 1查看 176关注 0票数 1

我使用的是ServiceStack的SocialBootstrapApi,它包含一个类CustomUserSession,我可以用它来覆盖OnRegistered方法。我想要覆盖它,因为我正在尝试获取有关注册的信息,以便可以发布新用户已注册的事件。此处理程序提供处理注册的RegistrationService实例,但不提供有关注册请求本身或生成的UserAuth实例的任何内容。例如,我想获取用于注册的电子邮件地址。

代码语言:javascript
复制
    public override void OnRegistered(IServiceBase registrationService)
    {
        base.OnRegistered(registrationService);

        // Ideally, I could do get the registered user's primary e-mail address from the UserAuth instance.
        var primaryEmail = ((RegistrationService) registrationService)
            .UserAuthRepo
            .GetUserAuth(this, null)  //<--- 'this' is a mostly empty session instance
            .PrimaryEmail;
    }

这当然不起作用,因为我用于GetUserAuth调用的会话实例没有包含任何必要的身份验证信息,这些信息对于查找用户的身份验证信息很有用。因此,正如您所预期的那样,GetUserAuth返回null。那么,我应该如何着手获取这些信息呢?将RegistrationService创建的UserAuth实例传递给OnRegistered处理程序是不是错误的设计?

代码语言:javascript
复制
    public interface IAuthSession
    {
        ...
        void OnRegistered(IServiceBase registrationService, UserAuth userAuth); // <-- new signature
        ...
    }

那会很方便!:)

或者,也许还有另一种方法来解决这个问题?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-03-20 03:12:33

那么我应该如何获取这些信息呢?

您应该能够通过registrationService访问注册申请的所有数据。你只需要做一些挖掘和铸造...

代码语言:javascript
复制
public override void OnRegistered(IServiceBase registrationService)
{
    base.OnRegistered(registrationService);

    var requestContext = (HttpRequestContext)registrationService.RequestContext;
    var dto = ((Registration)requestContext.Dto);
    var primaryEmail = dto.Email;
}

将OnRegistered处理程序传递给由RegistrationService创建的UserAuth实例是否有误?

我将把设计的决定权留给专业人士。上面的代码应该可以工作。造型看起来有点丑陋,但所有必要的数据都在那里。

我不喜欢黑进SS,所以我选择从dto.UserName收集的UserAuth中选择用户身份验证信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15506809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档