gpt4 book ai didi

SignalR/negotiate正在向/Account/Login发送请求-我没有Account/Login终结点

转载 作者:行者123 更新时间:2023-12-04 04:20:37 26 4
gpt4 key购买 nike

我在此请求的日志中看到很多条目:

/signalr/negotiate

错误是:
The controller for path '/Account/Login' was not found or does not implement IController

我有一个JS客户端连接到需要身份验证的 AppHub:
[Authorize]
[HubName("appHub")]
public class AppHub : Hub
{
// content
}

发生这种情况是因为存在一个“signalr” session ,其中存在过期的cookie试图进行连接:
  • 我不确定为什么请求会自动搜索该页面。没有在我的web.config,路由或其他任何地方指定它。为什么会这样呢?
  • 如果用户未经身份验证,我想阻止signalR客户端尝试连接。如何做到这一点?
  • 最佳答案

    如果我正确理解了您的问题,那么您将要通过继承AuthorizeAttribute类来创建自己的自定义类来处理此问题:https://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.118).aspx

    例如:

    public class MyCustAuthorize : AuthorizeAttribute
    {
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
    if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
    {
    filterContext.Result = new HttpUnauthorizedResult();
    }
    else
    {
    //modify this to do whatever you want to happen if unauthorized
    filterContext.Result = new RedirectResult("/session/noaccess/");
    }

    }

    }

    然后,您可以使用自定义类(而不是默认的授权)来装饰它
    (示例来自mvc Controller ,但应该能够在集线器上发挥相同的功能)
    所以这:
    [Authorize]
    public class AdminController : Controller
    {

    变成这个:
    [MyCustAuthorize]
    public class AdminController : Controller
    {

    我相信/Account/Login是表单auth的默认路径,因此,如果未在配置文件中定义它,则它将直接指向该目录。

    或者,您可以通过将以下loginUrl属性值放在web.config中的auth部分> Forms元素中,来插入要重定向到的特定URL(如果要搜索的URL):

    关于SignalR/negotiate正在向/Account/Login发送请求-我没有Account/Login终结点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45523537/

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