ASP.NET MVC JsonResult和AuthorizeAttribute

3

如何最直接地使用AuthorizeAttributeJsonResult,以使当用户未经授权时,应用程序返回Json错误而不是登录页面?

我目前正在考虑的两件事是扩展AuthorizeAttribute或创建一个实现IAuthorizationFilter的新属性。

1个回答

3

从您的操作中删除 AuthorizeAttribute

然后在您的操作的第一行插入以下内容:

if (!User.Identity.IsAuthenticated)
    return Json("Need to login");

或者返回您想要的任何消息。

2
这似乎是一个糟糕的设计,除非我将那个逻辑重构到另一个类中。如果我需要更改多个操作的错误消息怎么办?我不认为会发生这种情况,但你永远不知道... - knpwrs
5
如果您愿意,可以创建自己的属性来检查授权用户,如果他们没有被授权,则不要重定向,而是返回一个 JSON 对象。 - ajma
1
如果您需要多个错误消息,只需使用资源来保存它或将其作为静态字符串,以便在返回jsonresult时引用。 - ajma
@ajma,你有没有想过如何创建一个返回JSON结果的自定义属性?http://stackoverflow.com/questions/6997467/how-to-create-custom-jsonauthorize-attribute-to-secure-actions-which-returns-json - Joper
你可能需要创建一个自定义属性,然后该属性可以返回错误消息。 - ajma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接