【问题标题】:.net and jquery all of a sudden giving me 401 err.net 和 jquery 突然给我 401 错误
【发布时间】:2018-01-10 13:37:01
【问题描述】:

这是我的 ajax 调用:

$J.ajax({
    type: 'POST',
    url: "/ajax/getCharts",
    data: JSON.stringify(cids),
    dataType: 'json',
    asynch: false
})

这工作......直到昨天
我们正在使用 Microsoft.AspNet.Identity;
昨天我添加了更多用户角色,扩展了默认值,例如“admin”、“user”等。

现在我在我的 ajax.fail 标头中得到了这个错误:

X 响应 JSON: {"status":401,"headers":{"location":"http://localhost:56970/Account/Login?ReturnUrl=%2Fajax%2FgetCharts"}}

哪种方法有意义 - 如果调用未通过身份验证
注意:
在我的 ajaxController 中,我之前已将其注释为这样(有效):

[Authorize(Roles = "User")]
public class ajaxController : BaseController

现在我将其扩展为包含我的新自定义用户角色,例如:

[Authorize(Roles = "Superuser, Poweruser, User")]
public class ajaxController : BaseController

那没用
我也在RegisterRoutes中添加了这个:

        var settings = new FriendlyUrlSettings();
        settings.AutoRedirectMode = RedirectMode.Off;
        routes.EnableFriendlyUrls(settings);

建议:
ASP.NET Calling WebMethod with jQuery AJAX "401 (Unauthorized)"

但是没用

这个页面对我来说毫无意义:
jquery $.ajax call results in 401 unauthorized response when in Chrome or Firefox, but works in IE

我在这里错过了什么?

【问题讨论】:

  • 这里完全是吐槽,但应该是 ["Superuser", "Poweruser", "User"] 代替吗?

标签: jquery asp.net asp.net-ajax


【解决方案1】:

我能理解的问题是当用户尝试登录时说我刚刚发送了登录请求。此时我没有登录意味着我目前没有任何角色,并且您已将授权过滤器放入 ajax 控制器允许一些角色

现在要删除此问题,请将 allowannonymus 属性仅添加到 ajax 控制器中的登录操作

喜欢

  [AllowAnonymous]
public async Task<ActionResult> Login()
{
}

p.s :- 如果你有的话,别忘了把它放在 post 动作和 register 动作中

【讨论】:

  • 请澄清 - 我没有 ajax login() 函数所以我不确定你指的是什么
  • @toy ajax 登录功能正在调用一些服务器端操作方法,对吗?把允许匿名 o 那
  • 哦,我明白你的意思了——你只是在里面放了一个通用名称,但这会影响安全吗?我的意思是 - 一些随机的人可以在没有登录的情况下调用我的 ajax 函数吗?
  • @toy 这就是为什么您必须在您希望任何人访问而不是整个控制器的特定操作中放入当您将其放在操作上时,该属性将仅针对该操作被覆盖,其余操作将被覆盖工作一样
猜你喜欢
  • 2011-02-06
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多