SB2*_*055 9 signalr signalr.client
我在这个请求的日志中看到了很多条目:
/signalr/negotiate
Run Code Online (Sandbox Code Playgroud)
错误是:
The controller for path '/Account/Login' was not found or does not implement IController
Run Code Online (Sandbox Code Playgroud)
我有一个连接到AppHub需要身份验证的JS客户端:
[Authorize]
[HubName("appHub")]
public class AppHub : Hub
{
// content
}
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为有一个'signalr`会话活着,并且过期的cookie尝试连接:
如果我正确理解您的问题,那么您将需要创建自己的自定义类来通过继承 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/");
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以用你的自定义类而不是默认的授权来装饰它(示例来自 mvc 控制器,但应该能够在你的集线器上发挥相同的作用)所以这样:
[Authorize]
public class AdminController : Controller
{
Run Code Online (Sandbox Code Playgroud)
就变成这样了:
[MyCustAuthorize]
public class AdminController : Controller
{
Run Code Online (Sandbox Code Playgroud)
我相信 /Account/Login 是表单身份验证的默认路径,因此如果您的配置文件中未定义它,它就会指向那里。
或者,您可以插入要重定向的特定 url(如果您正在搜索该 URL),方法是将以下 loginUrl 属性值放入 web.config 中的 auth 部分 > forms 元素中:
| 归档时间: |
|
| 查看次数: |
582 次 |
| 最近记录: |