从IIS托管的MVC应用程序调用时,Context.User在自托管SignalR集线器中为null

长枪举行

我有一个IIS托管的MVC 5应用程序,该应用程序使用Asp.Net Identity和OWIN通过.AspNet.ApplicationCookie进行身份验证。从其观点之一,我通过SignalR JS客户端调用自托管SignalR集线器(在同一服务器上运行)上长时间运行的方法。这些调用均按预期方式工作。现在,我想用[Authorize(Roles =“ Administrator”)]装饰集线器。事实证明这是有问题的。在集线器方法中设置断点将显示Context.User为空,即使.AspNet.ApplicationCookie显然位于Context.RequestCookies中。

这是集线器(在Windows服务中自行托管)的引导程序:

app.Map("/signalr", map =>
{
    map.UseCors(CorsOptions.AllowAll);
    map.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie
    });

    var hubConfiguration = new HubConfiguration();
    map.RunSignalR(hubConfiguration);
});

这是Web应用程序(托管在IIS中)的身份验证配置:

// Configure the db context, user manager and signin manager to use a single instance per request
app.CreatePerOwinContext(UserAccountContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
// Configure the sign in cookie
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
        // Enables the application to validate the security stamp when the user logs in.
        // This is a security feature which is used when you change a password or add an external login to your account.  
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromMinutes(30),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
    }
});

问题1:在上述情况下是否可以使用[授权]?如果是这样,怎么办?

问题2:将自动托管的集线器合并到IIS托管的应用程序中会更好吗?如果是这样,则在IIS下长时间运行的集线器方法是否存在任何问题?

更新1我尝试TicketDataFormat = new TicketDataFormat(new MachineKeyDataProtector("ASP.NET Identity"))在集线器配置中添加到CookieAuthenticationOptions,但这没有帮助。当然,这似乎应该比现在容易。

长枪举行

最后,我将自托管的集线器移到ASP.Net应用程序中,并且运行正常。与实施此SO问题(OWIN自主机Cookie身份验证和旧版.NET 4.0应用程序/ FormsAuthenticationTicket)中的变通方法相比,这似乎更容易且更可维护。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自托管SignalR应用程序中集线器外部的集线器上下文

来自分类Dev

Context.User在Signalr 2.0集线器中为null

来自分类Dev

在IIS7.5托管的MVC 5应用程序中两次调用Application_Start()

来自分类Dev

Azure Web作业中的Signalr自托管集线器是否需要提升?

来自分类Dev

TuesPechkin:IIS托管的应用程序

来自分类Dev

iis托管后,signalr应用程序无法正常工作

来自分类Dev

在IIS 7中将OWIN托管为Web应用程序(在虚拟目录中未调用OWIN启动)

来自分类Dev

从外部服务通过Asp.Net MVC应用程序中托管的SignalR集线器向Web客户端发送通知

来自分类Dev

线程在IIS托管的WCF应用程序中随机停止

来自分类Dev

是否可以在不使用IIS的情况下自托管asp.net mvc应用程序?

来自分类Dev

(路由问题)在IIS上托管.NET Core 5.0 MVC应用程序

来自分类Dev

是否可以在不使用IIS的情况下自托管asp.net mvc应用程序?

来自分类Dev

自托管ASP.NET MVC应用程序

来自分类Dev

在单个控制台应用程序中自托管 SignalR 和 Web Api

来自分类Dev

将Asp.Net Web API托管为IIS上的Asp.Net MVC应用程序下的应用程序

来自分类Dev

在 IIS 中托管时,我的 MVC Core 应用程序的 Program 类应该是什么样的?

来自分类Dev

MVC Web应用程序中的托管WCF服务

来自分类Dev

托管WCF应用程序IIS身份验证

来自分类Dev

GAC问题无法在IIS上托管应用程序

来自分类Dev

从Linux Web应用程序使用IIS托管的WCF服务

来自分类Dev

如何使用Docker使用IIS托管Blazor应用程序?

来自分类Dev

IIS上的托管应用程序的URL重写

来自分类Dev

托管WCF应用程序IIS身份验证

来自分类Dev

从.net程序调用托管的Filemaker应用程序

来自分类Dev

SignalR连接将无法启动到IIS托管的应用程序

来自分类Dev

自托管的vnext应用程序

来自分类Dev

是否可以在没有IIS(不是Web API)的情况下自托管MVC 4应用程序?

来自分类Dev

是否可以在没有IIS(不是Web API)的情况下自托管MVC 4应用程序?

来自分类Dev

调用本机代码的多线程托管应用程序

Related 相关文章

  1. 1

    自托管SignalR应用程序中集线器外部的集线器上下文

  2. 2

    Context.User在Signalr 2.0集线器中为null

  3. 3

    在IIS7.5托管的MVC 5应用程序中两次调用Application_Start()

  4. 4

    Azure Web作业中的Signalr自托管集线器是否需要提升?

  5. 5

    TuesPechkin:IIS托管的应用程序

  6. 6

    iis托管后,signalr应用程序无法正常工作

  7. 7

    在IIS 7中将OWIN托管为Web应用程序(在虚拟目录中未调用OWIN启动)

  8. 8

    从外部服务通过Asp.Net MVC应用程序中托管的SignalR集线器向Web客户端发送通知

  9. 9

    线程在IIS托管的WCF应用程序中随机停止

  10. 10

    是否可以在不使用IIS的情况下自托管asp.net mvc应用程序?

  11. 11

    (路由问题)在IIS上托管.NET Core 5.0 MVC应用程序

  12. 12

    是否可以在不使用IIS的情况下自托管asp.net mvc应用程序?

  13. 13

    自托管ASP.NET MVC应用程序

  14. 14

    在单个控制台应用程序中自托管 SignalR 和 Web Api

  15. 15

    将Asp.Net Web API托管为IIS上的Asp.Net MVC应用程序下的应用程序

  16. 16

    在 IIS 中托管时,我的 MVC Core 应用程序的 Program 类应该是什么样的?

  17. 17

    MVC Web应用程序中的托管WCF服务

  18. 18

    托管WCF应用程序IIS身份验证

  19. 19

    GAC问题无法在IIS上托管应用程序

  20. 20

    从Linux Web应用程序使用IIS托管的WCF服务

  21. 21

    如何使用Docker使用IIS托管Blazor应用程序?

  22. 22

    IIS上的托管应用程序的URL重写

  23. 23

    托管WCF应用程序IIS身份验证

  24. 24

    从.net程序调用托管的Filemaker应用程序

  25. 25

    SignalR连接将无法启动到IIS托管的应用程序

  26. 26

    自托管的vnext应用程序

  27. 27

    是否可以在没有IIS(不是Web API)的情况下自托管MVC 4应用程序?

  28. 28

    是否可以在没有IIS(不是Web API)的情况下自托管MVC 4应用程序?

  29. 29

    调用本机代码的多线程托管应用程序

热门标签

归档