问题标签 [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.

0 投票
5 回答
11080 浏览

c# - 是否可以覆盖 ASP.NET MVC 中 [Authorize] 的默认行为?

我想知道是否/如何可以覆盖 ASP.NET MVC 中的默认 [Authorize] 行为。我知道我可以创建一个新的动作过滤器,制作我自己的属性等等;如果我可以简单地更改 [Authorize] 行为并用我自己的代码替换它的工作,我只是感兴趣吗?

编辑:男孩和女孩。感谢您的意见,但正如我所写,我不想引入新的 [XYZAuthorize] 属性。我知道如何做到这一点。我想保留 [Authorize] 符号,但只是改变它的工作方式。

0 投票
2 回答
849 浏览

asp.net-mvc - 如何在 asp.net mvc 中获得全局授权

我一直在环顾四周,但我没有看到任何规范,也许我搜索了错误的关键字。但我在这里,所以我应该问点什么.. :)

我熟悉授权属性,但我认为它只适用于操作。如果我希望我的整个应用程序在访问任何操作之前先授权,我应该怎么做?

在每个动作中重复将 [Authorize] 标签放在它们上面会很痛苦。

非常感谢

0 投票
2 回答
2449 浏览

asp.net-mvc - .net MVC 的 AuthorizeAttribute 扩展...两个问题/疑问

我的第一个问题是,我应该把这个自定义扩展放在哪里,以便可以调用它而不是默认的 AuthorizeAttribute?

我目前创建了一个新项目,其中包含我的 MVC 解决方案中的所有业务逻辑。我的逻辑项目中有一个 .cs 文件,其中包含我所有的安全类。我尝试将扩展类添加到该文件并在我的控制器上,它看到该类很好,并且当我添加属性时智能感知并没有对我吠叫,但是当我尝试编译时,我收到类型或命名空间的错误找不到。自定义属性是否需要放在特殊的地方才能编译?

第二个问题...可能与第一个问题有关:当我尝试从 AuthorizeAttribute 覆盖 AuthorizeCore 方法时,我将 System.Web.HttpContextBase 作为 httpcontext 传递。由于某种原因,Visual Studio 无法解析 System.Web.HttpContextBase。同样,这可能与我将此类保存在解决方案中的位置有关。或者我可能需要在某个地方导入一个 dll 来扩展它?

请指教。

0 投票
1 回答
988 浏览

asp.net-mvc - 从 AuthorizeAttribute Extension 添加到 ViewData[] 集合

我编写了一个扩展类来为我的操作方法自定义我的 AuthorizeAttribute,并且我希望能够在满足特定条件时将消息注入到我的视图中。当用户未获得授权但未将我的消息添加到我的 ViewData 集合时,我正在使用以下代码加载共享视图。有什么想法吗?

我还尝试在调用上方设置我的 ViewData["Message"] 集合项以更改视图但没有成功。

0 投票
1 回答
1163 浏览

asp.net-mvc - 自定义 AuthorizeAttribute + 自定义 SiteMapProvider 相关吗?

我有一个用于控制器类的自定义SiteMapProvider(从数据库填充)和一个自定义AuthorizeAttribute(验证当前用户角色 + 针对 Role_Page 数据库请求的页面)。

我必须实现该功能SiteMapProvider.IsAccessibleToUser(context, node)。我也必须实施AuthorizeAttribute.AuthorizeCore(context)

这两个函数有什么关系?是否有某种方法可以对 SiteMapProvider 进行“属性化”?

一些代码:


编辑: 这可能是一个解决方案(内部AuthorizeCore())吗? context然而是HttpContextBase,并且IsAccessibleToUser()HttpContext作为参数。


当前代码:

0 投票
1 回答
841 浏览

asp.net-mvc - ASP.NET MVC - 扩展授权属性

目前我使用 [Authorize(Roles = ".....")] 来保护我的 ASP.NET MVC 1 应用程序上的控制器操作,这工作正常。但是,某些搜索视图需要具有路由到这些操作的按钮,这些操作需要根据搜索列表中选择的记录以及登录用户的安全权限来启用/禁用。

因此,我认为我需要有一个类访问数据库表,该表交叉引用这些目标控制器/操作与应用程序角色来确定这些按钮的状态。显然,这会使事情变得混乱,因为 privs 需要在 2 个地方维护 - 在该类/DB 表中以及控制器操作中(另外,如果我想更改对操作的访问,我将不得不更改代码和编译,而不仅仅是更改数据库表条目)。

理想情况下,我想扩展 [Authorize] 功能,以便不必在 [Authorize] 代码中指定角色,而是根据用户、控制器和操作查询安全类,然后返回一个布尔值允许或拒绝访问。有没有关于这方面的好文章 - 我无法想象这是一件不寻常的事情,但我似乎很难找到任何关于如何去做的事情(可能是周一早上的大脑)。我已经开始了一些代码,查看文章http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/,并且它似乎开始正常,但我找不到从 httpContext 获取调用控制器和操作值的“正确”方法 - 我可能会捏造一些代码来从请求 url 中提取它们,但是对我来说似乎不对,我宁愿正确地做。

干杯

MH

0 投票
1 回答
1494 浏览

asp.net-mvc - 显示 [Authorize] 属性的特定于操作的授权消息

[Authorize]当一个或[Authorize(Roles="Administrator")]属性将用户重定向到登录页面时,有没有办法显示特定于操作的授权消息?

理想情况下,

据我了解,属性并不意味着添加功能,但这似乎纯粹是信息性的。可以在动作中执行此操作,但与使用属性相比,这似乎不太优雅。

或者,

是否有现有的方法可以做到这一点,或者我是否需要覆盖 [Authorize] 属性?

0 投票
1 回答
2776 浏览

c# - 如何利用参数值对控制器使用自定义 AuthorizeAttribute?

我正在尝试保护控制器操作,以防止用户访问他们无权访问的实体。我可以使用以下代码来做到这一点。

我希望能够向控制器操作本身添加一个属性。为了验证对实体的访问,我需要查看已将什么值传递给控制器​​以及用户可以访问哪些实体。这可能吗?

0 投票
3 回答
1413 浏览

c# - ASP.NET MVC AuthorizeAttribute 将值传递给 ActionMethod?

我只是 ASP.NET MVC 的新手,不确定如何以“正确的方式”完成某项任务。

本质上,我将登录的 userId 存储在 HttpContext.User.Identity 中,并编写了一个EnhancedAuthorizeAttribute来执行一些自定义授权。

在覆盖的OnAuthorization方法中,我的域模型命中数据库以确保当前用户 id 可以访问传入的 routeValue "BatchCode"。原型是:

如果用户无法访问 ReviewGroup 并且 OnAuthorization 拒绝访问,它将返回 null。

现在,我知道装饰操作方法只有在 OnAuthorization 通过时才会执行,但我不想再次访问数据库以再次获取 ReviewGroup。

我现在正在考虑将 ReviewGroup 存储在控制器中HttpContext.Items["reviewGroup"]并从控制器中访问它。

这是一个可行的解决方案,还是我走错了路?

谢谢!

0 投票
2 回答
2550 浏览

c# - 有人可以向我解释这段 ASP.NET MVC 代码吗?

这是 ASP.NET MVC2 (RTM)System.Web.Mvc.AuthorizeAttribute类中的当前代码:-

所以如果我被“授权”然后做一些缓存的东西,否则抛出 401 Unauthorized 响应。

问题:那 3 条缓存线是做什么的?

干杯:)