问题标签 [onauthorization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
5850 浏览

asp.net-mvc-3 - 如果 Controller.OnAuthorization() 返回 void 那么我如何拒绝访问?

我本来希望它返回“真”或“假”...

我已经在我的控制器中覆盖了 OnAuthorization 并且基于丢失或无效的 HTTP 标头值我想返回 403 禁止,但是我似乎无法弄清楚如何从 OnAuthorization 返回任何内容,以便它实际上会停止控制器的其余部分从运行。

我该怎么办?

我在下面的第一次尝试是一个巨大的失败,我认为 Deny() 正在运行但没有任何反应......

UPDATE看起来像这样成功了,为什么这可能是一个不好的方法?

再次更新好的,所以现在它根本不起作用......我放了一个断点,看着它进入那个 if 语句,然后进入 base.OnAuthorization(...) 调用,然后再次退出......如果它没有执行,为什么它会进入 if 语句?如果它正在执行,为什么调用 base.OnAuthorization(...) 不会提前结束?

0 投票
2 回答
5704 浏览

asp.net-mvc-3 - 为什么我重写的 OnAuthorization 没有返回我设置的 filterContext.Result?

这是我的基本控制器的代码,其想法是如果授权字符串不在 HTTP 标头中,我们会将它们踢出。我发誓它工作正常,现在突然不工作了。奇怪的是,当我调试它实际上是进入 if 语句,所以我请求的 HTTP 标头确实是一个 NULL 或 EMPTY 字符串,但是,它不再提前退出并返回 403 Access Denied ......它正在工作很好,突然之间,当我尝试解析实际上未找到的授权字符串时,它只是忽略了整个事情并最终在应用程序中崩溃。

更新:刚试过 filterContext.Result = new HttpUnauthorizedResult(); 相反,结果相同。尝试解析未找到的标头字符串时,控制器操作继续并引发错误。

更新 2:添加了“return;” 在除最后一个之外的每个 base.OnAuthorization() 调用之后,现在当它失败时,我得到一个从 MVC 移动的 302,然后是一个 404,结果是该应用程序试图重定向到一个实际上并不实际的默认登录页面 URL存在......这是否足够好?也许,但我宁愿直接阻止它,而不是让一些不稳定的重定向发生作为阻止它们的方式,这对我来说并不安全。

0 投票
0 回答
275 浏览

asp.net-mvc-3 - OnAuthorization 或其他一些方法 - Asp.net MVC3

我有一个基于 ASP.NET C#、MVC3 的应用程序。在这个应用程序中,我想检查客户是否拥有使用该应用程序的有效许可证。如果没有找到许可证,我想将它们重定向到 LicenseController 操作。
我正在考虑使用我的基本控制器的 OnAuthorization 方法来执行此操作。如果这是最好的地方,或者是否有任何其他更好的解决方案,我想听听您的意见。

非常感谢您的见解

0 投票
2 回答
5339 浏览

asp.net-web-api - 如何使用 Microsoft.Owin.Security 自定义 System.Web.Http.AuthorizeAttribute?

我在我的 WebAPI 中实现了一个自定义 AuthorizeAttribute(请注意,这与 MVC AuthorizeAttribute 不同)。

我已经覆盖了 OnAuthorization 方法。在这种方法中,我检查用户是否经过身份验证。如果未通过身份验证,我会挑战用户登录。

我的自定义逻辑的一部分是检查经过身份验证的用户是否有权继续(基本上我检查他们的姓名/电子邮件。如果它存在于预定义的列表中,那么他们有权访问)。

我看到的问题是这样的:在用户成功验证但未能获得授权后,我看到有一个无限循环重定向到登录页面。

同样,用户凭据的挑战在于 OnAuthorization 方法。什么可能导致这种无限循环,一旦确定用户没有授权,如何防止这种情况发生?

* 用片段更新 *

0 投票
2 回答
2993 浏览

asp.net-mvc - 如果会话在 mvc 中过期,则显示来自 ActionFilter 的弹出窗口

我们使用 mvc 创建了一个网站,其中我有 3 个控制器:

我们在 ActionFilters 中编写了自定义授权,我们在其中检查会话是否已过期。如果会话过期,我们将重定向到登录页面。这是 ActionFilter 中的代码:

这非常有效,即当会话到期并且用户单击网站上的任何链接时,他将被重定向到登录页面,其地址为

但是现在我们想在页面(无论用户在哪个页面)上显示一个弹出窗口,它将显示消息“该会话已过期”,并且在关闭该弹出窗口时,用户将被重定向到登录页面。

我无法弄清楚如何从 ActionFilter 本身调用 Jquery 弹出窗口。我在网上搜索了许多解决方案,但找不到正确的解决方案。有人建议使用HandleUnauthorizedRequest来调用 Action 方法(Call RedirectToAction from ActionFilter)。但是,我很困惑是只使用HandleUnauthorizedRequest还是在我的代码中同时使用 this 和OnAuthorization 。有人可以提出解决方案吗?

注意:我有一个通用视图,我可以在其中保留 html 以供在整个网站上使用。

0 投票
1 回答
124 浏览

c# - 继承授权属性时 Azure AD OpenId 身份验证不起作用

我尝试为使用 C# 4.7.2 完整框架编写的天蓝色应用服务验证用户身份。

身份验证在 Azure AD 上成为真正的 OpenId。

在控制器上使用 [Authorize] 属性时效果很好。

当我尝试使用从 AuthorizeAttribute 继承的属性来装饰控制器时,身份验证不再基于 Azure Ad(在云中或通过 iisexpress/localhost)

我需要重写 OnAuthorize 方法,因为应用程序根据上下文显示不同的数据,并且该上下文必须与某些用户安全组匹配。

即:url /context1 和 /context2 播放相同的代码,但 dbs 请求将因“where context = @context”条件而有所不同。所有 url 都将以 /context1 或 /context2 为前缀。

这是相关的代码:

“OnRedirectToIdentityProvider”帮助我检查是否调用了 azure AD 身份验证。

我希望在 OnAuthorize 被覆盖后调用 Startup.cs 配置。

谢谢你的帮助。