问题标签 [authorize-attribute]
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.
c# - 如何在 HandleUnauthorizedRequest 中输出默认的 404 页面
我已经编写了AuthorizeAttribute
一个覆盖HandleUnauthorizedRequest
. 此覆盖有条件地将响应状态代码设置为 404,其中:
问题是完整的响应是:
当我想发回默认的 404 页面时。就像是:
我怎么做?
asp.net-mvc-2 - MVC2 AuthorizeAttribute - 这是怎么回事?
背景
我有一个 MVC2 项目,在项目级别的 web.config 文件中启用了表单身份验证:
我还在那里声明了一个自定义 MembershipProvider:
我有一个用 [Authorize] 属性装饰的索引操作:
感觉流动
当我调试项目时,我最初被重定向到 web.config 中指定的 ~/Account/LogOn 控制器/操作:
注意:此时控制器的“用户”属性为 Null
检查 ModelState 后,它转到我的 MembershipService,即 AccountModels.ValidateUser(username, password):
转到MagicMembershipProvider.ValidateUser(用户名,密码):
最后转到 BaseMembershipProvider.ValidateUser(username, password):
服务器变量由一个自定义 isapi.dll 尽早设置,它拦截所有调用并进行身份验证。如果那里有值,则认为用户是真实的。此方法返回一个简单的布尔值。在我的代码中没有其他地方引用或传递了这个变量。
这个布尔值被传递回执行树(因为没有更好的词)到LogOn(string returnUrl)
启动它的原始方法。
踢球者
现在,在这一点上,不知何故,用户属性不再为空,并且 User.Identity.Name 属性设置为服务器变量中的 MagicUserName。 我没有这样做。
发生了什么?
这种行为不是我想要的,但我不知道在哪里/如何停止它,因为我从未告诉框架这样做。我假设它在默认 AuthorizeAttribute 实现中的某个地方,但是它如何知道使用我检查的这个随机服务器变量?
任何照明将不胜感激。
asp.net-mvc - 处理 ajax 调用中的会话超时
我正在使用 jquery 对 asp.net mvc 控制器操作进行 ajax 调用:
当会话超时时,此调用将失败,因为用户对象存储在会话中。我创建了一个自定义授权属性,以检查会话是否丢失并重定向到登录页面。这适用于页面请求,但不适用于 ajax 请求,因为您无法从 ajax 请求重定向:
我在另一个线程上读到,当用户未通过身份验证并且您发出 ajax 请求时,您应该将状态代码设置为 401(未经授权),然后在 js 中检查并将它们重定向到登录页面。但是,我无法正常工作:
基本上,它会将其设置为 401,但随后它将继续进入控制器操作并抛出未设置为对象错误实例的对象引用,然后将错误 500 返回给客户端 js。如果我更改我的自定义 Authorize 属性以验证 ajax 请求并为那些未通过身份验证的请求返回 false,这会使 ajax 请求返回我的登录页面,这显然不起作用。
我如何让这个工作?
asp.net-mvc - 关于管理员 [Authorize] 属性的问题
如果我的 ASP.NET MVC 3 (Razor) Web 应用程序中有一个区域,其中所有控制器都派生自如下所示的基本控制器:
当非管理员尝试访问该区域中的 URL 时,他们会被重定向到 web.config 中指定的登录页面。
但是,如果用户已经通过身份验证,但不是管理员,这并没有真正的意义。在那种情况下,我们不应该返回 HTTP 401 吗?
我的问题基本上是人们如何处理这个问题 - 他们是否创建自定义授权属性?
asp.net-mvc - asp.net MVC 3 将 AuthorizeAttribute 应用于区域
我目前正在编写一个 Admin MVC 3 站点,每个用户只能访问该站点的某些部分。
我站点的区域与用户角色相同,所以我想做的是将 AuthorizeAttribute 放在每个区域上,使用区域的名称作为角色中的参数。
到目前为止,当我对每个区域的检查进行硬编码时,我已经完成了这项工作,但我只想遍历所有区域并应用 Authorize 过滤器。(我使用它作为我的自定义 FilterProvider - http://www.dotnetcurry.com/ShowArticle.aspx?ID=578)
到目前为止我的代码(“Gcm”是我的领域之一,也是一个角色):
有谁知道如何获取我的应用程序的所有区域,所以我可以遍历它们,而不是对每个区域进行硬编码?
或者,如果有人对如何按区域进行授权有更好的想法,那将不胜感激。
感谢您的帮助萨恩
asp.net-mvc - 使用 ASP.NET MVC 重定向到 FormsAuthentication 登录页面时显示有用的消息
我想做一个AuthorizeAttribute
包含Message
属性的自定义。问题是,我的 FormsAuthentication 重定向到指定的 loginUrl。该视图如何访问属性的 Message 属性?
例如,我使用自定义 AuthorizeAttribute 执行此操作
FormsAuthentication
如果用户未登录,它将被重定向到 /Account/LogOn(感谢 web.config 中的设置)。我想在登录视图上显示“您必须登录才能查看用户设置”,以便用户知道为什么他们被重定向到登录页面
c# - MVC3 Custom AuthorizeAttribute:如何从控制器传入对象
我有一个包含所有登录数据的对象,它在我的控制器中(它是在切换到 MVC3 之前编程的)。
我正在尝试向该站点添加授权,到目前为止,我有:
和
无论如何将 MyLoginObject 传递给 AuthorizeAttribute 类?如果不能,我至少可以从指定用户是否被授权的对象中传入一个布尔值?
编辑:我的解决方案基于 Zonnenberg 的建议。
然后我将 loginobject 的实例化移动到 CustomAuthorization
所以现在登录是在授权内完成的,我可以调用 User 从控制器访问登录。
model-view-controller - 会话在 MVC AuthorizeAttribute 中变为空
我正在使用AuthorizeAttribute来检查用户是否设置了超过 18 岁的 cookie 来访问页面。
这工作正常,但我现在稍微扩展。由于所有视图都使用此属性,因此我使用它来允许我尽早启动我的网站。如果使用添加 ?VIEWSITE=true 到任何 URL,它将设置一个 Session 变量,并允许他们访问该站点。否则,他们会被引导到一个保留页面。
这在页面第一次运行时工作正常。但是,我在页面上使用了输出缓存,下次页面加载时,我的 httpcontext.session 为空?
我在属性中添加了一个“Order”变量,以确保它们以正确的顺序执行:
从我的属性中截取:
从缓存加载页面后,我在这里是否缺少一些东西以便能够读取/设置会话变量?
需要明确的是,它是 httpContext.Session 为空,而不是具体 httpContext.Session["VIEWSITE"]
asp.net-mvc-3 - 允许来自非登录用户的控制器方法
我有一个控制器,其中大多数方法都应限制为 Role=Admin ,因此该类实例化为:
[授权(角色 = 管理员)]
每种方法都进行此检查。我知道我可以通过方法覆盖此属性方法以允许其他用户角色,但我想完全删除此类中的一种方法的授权检查。
那是什么语法?
谢谢
asp.net-mvc - 如何将数据从 AuthorizeAttribute 传递到控制器?
我创建了一个自定义 AuthorizeAttribute 来验证在 HTTP 标头中发送的一些 OAuth 凭据。我正在使用其中一些凭据来识别发出请求的人。一旦我在 AuthorizeAttribute 中解析了这些信息,有没有办法将其传递给控制器的实例变量?然后在我的控制器中的任何地方,我都会有请求方的 ID。