首页 > 解决方案 > C# - 如何扩展 UserLoginEventSuccessEvent

问题描述

我想扩展它UserLoginSuccessEvent以包含第二个IPrincipal对象,如下所示:

public class MyCompanyUserLoginSuccessEvent : UserLoginSuccessEvent
{
    public IPrincipal MyCompanyUser { get; }

    public TylerUserLoginSuccessEvent(string username, string subjectId, string name, IPrincipal myCompanyUser)
        : base(username, subjectId, name)
    {
        MyCompanyUser = myCompanyUser;
    }
}

然后它是这样调用的:

            var myCompanyAuthenticationResult = await HttpContext.AuthenticateAsync(AzureADDefaults.AuthenticationScheme);

            await _events.RaiseAsync(new MyCompanyUserLoginSuccessEvent(user.UserName, user.Id, user.UserName, myCompanyAuthenticationResult.Principal));

            authenticationResult.Properties.Items.TryGetValue("returnUrl", out string returnUrl);
            
            return await RedirectToReturnUrl(returnUrl);

但是,我在尝试MyCompanyUser从调用此 API 的代码中访问时没有成功。

基本上,我只需要 C# MVC 中的 BaseController 能够拥有多个User属性,这样我就可以看到他们在网站上和从公司的角度登录的身份。

不知何故,C# MVC 中的基本Controller对象是设置这个User属性,我不明白我是如何向它添加另一个用户的。

标签: c#authenticationauthorization

解决方案


推荐阅读