问题标签 [authorize]

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 投票
2 回答
7339 浏览

asp.net-mvc - 如何扩展/架构 ASP.NET MVC 3 授权属性以处理此场景

我一直在努力思考这个答案,但找不到一个很好的解决方案来正确地做到这一点。

我已经阅读了这些文章
http ://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/
http://geekswithblogs.net/brians/archive/ 2010/07/08/implementing-a-custom-asp.net-mvc-authorization-filter.aspx
ASP.NET MVC 自定义授权
http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute .aspx
自定义授权属性附加参数?

想也许最后一个很接近。


设想:

  • 用户创建角色
  • 用户可以分配角色有权执行的操作。
  • 用户将用户添加到这些角色
  • 用户也是部门的一部分。

那么在控制器中,我怎么能说用户可以访问操作,因为我不知道用户管理员创建的角色是什么?

所以在逻辑上......假设我有一个带有“创建”、“详细信息”的任务控制器。该任务有一个“服装”部门。

  • 任务:
    --TaskID
    --TaskTitle
    --TaskDepartmentID

  • -- 用户:
    -- 用户名
    -- 角色
    -- 部门

    我会以某种方式将“创建”操作与“创建任务”功能
    相关联 我会以某种方式将“详细信息”操作与“查看任务详细信息”功能相关联

管理员将添加一个名为“任务用户”的新角色,并说此角色可以“创建任务”
管理员还允许此角色“查看任务详细信息”
管理员将打开“部门级安全性”


创建:
任务创建时在控制器上调用我需要确保用户处于允许“创建任务”的角色中。因此,默认情况下,我无法将允许的“角色”发送到授权属性中,因为我不知道它们。我需要以某种方式发送用户拥有的所有角色,并查看角色是否有权

使用部门安全查看“创建任务”:
当另一个用户查看此任务时,他们可能有权访问“查看任务详细信息”(我可以弄清楚但我解决了第一个问题)。但是,由于任务是针对他们所在部门以外的另一个部门,我需要拒绝访问。如果任务是用户所在部门之一的一部分,则用户只能“查看任务详细信息”。

这是我无法弄清楚的。如何正确扩展 AuthorizeAttribute 以便我可以通过 GerRolesForUser 发送角色列表,因为它只接受一个字符串,以及如何识别它用于什么操作,然后通过检查部门 ID 在另一个级别上限制安全性。

部门 ID 不一定要被缓存,所以也许我可以在控制器级别做到这一点。

0 投票
1 回答
891 浏览

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 实现中的某个地方,但是它如何知道使用我检查的这个随机服务器变量?

任何照明将不胜感激。

0 投票
3 回答
24833 浏览

asp.net-mvc - 在 asp.net MVC 中授权属性和 jquery AJAX

我使用 jquery ajax 函数提交表单。用户必须登录,否则他们必须重定向到登录页面。我已经使用了 Authorize() 属性。

如果用户未登录,则操作将登录页面返回到 jquery 的 ajax 函数,并显示在同一页面上,但我想将用户重定向到登录页面。有什么解决办法吗?

0 投票
2 回答
5243 浏览

cancan - 大礼包自定义角色权限

我正在尝试在特定权限内提供一些自定义角色。在任何地方都找不到这个答案

角色能力.rb

我认为这可能是一个流行的想法,让具有“经理”角色的用户仅管理产品和其他某些模型......

如果我改变

它按预期工作......我可以访问所有管理区域

我只希望“零售商”能够:管理产品!;)

“admin”只是一个与用户关联的角色,即所有角色都是用户。

您可能会看到它的发展方向,零售商可以注册并销售他们自己的商品......这就是目标。

任何指针?

0 投票
2 回答
1381 浏览

c# - 使用授权时IE无限循环

我正在开发一个 Facebook 应用程序,如果访问者通过 Facebook 获得授权,我只想允许访问某些视图。这应该是一个非常简单的任务,我认为是,直到我在 IE 中尝试了它。以下代码在 Chrome 和 Safari 中运行良好。我想使用表单身份验证,因此我设置了

在 web.config 中。这将在进入我的应用程序时将访问者引导至以下 ActionResult:

然后用户被重定向到 Facebook 页面,访问令牌被发送回我的 OAuth ActionResult:

我在这里要做的是首先验证我从重定向返回的令牌是否有效。如果是,那么我会提取有关访问者的一些数据,例如 FacebookID 和姓名。然后我将它与我的数据库进行匹配,以查看用户是否已经存在,如果不存在,我创建一个。我还在我的自定义角色提供程序中为用户分配了一个角色,但在此之前我遇到了无限循环问题。然后我设置

我认为这是跟踪访问者是否被授权的核心。据我了解,当访问者尝试调用需要 [Authorize] 的 ActionResult 时,系统将检查此 cookie。

好吧,有人可以澄清一下为什么上面的代码在 Chrome/Safari 中工作,但在 IE 中不断循环登录然后 OAuth 无限?

我的应用正在使用 MVC 3、EF Code First 和 Facebook C# SDK 5.0.25

0 投票
2 回答
688 浏览

asp.net-mvc-3 - 授权例外

我已经用权限注释标记了我的控制器,但想免除其中一种方法......可以这样做吗?如何?

0 投票
4 回答
1037 浏览

asp.net - asp.net mvc3,我如何进行身份验证?

我需要为我的朋友建立一个“我的帐户”应用程序。我打算使用 asp.net MVC 3。

我必须使用第三方 API 对用户进行身份验证。如果这是常规的 Web 应用程序,这很容易,我使用第三方 API 提交请求,然后得到响应。如果这是授权用户,请创建一个会话。在所有受保护的页面上,我只检查会话,如果存在,则显示内容,否则重定向回登录页面。

我可能可以在我的 mvc3 项目上做同样的事情,但我知道这绝对是一个错误的方法。MVC3 非常灵活。必须有更好的方法来做到这一点。在我从第三方 API 得到响应后。之后我该怎么办?如果可以的话,请给我一些代码。

0 投票
2 回答
4746 浏览

jquery - mvc 3、jquery ajax 和表单身份验证

在我的 MVC3 项目中,我有一个带有 [Authorize] 属性的控制器。我有一个没有 ajax 的表单提交,如果他/她没有登录,它会将用户(如预期)重定向到登录屏幕。

但是,现在我有一个使用 jquery ajax 提交的表单,我该如何做同样的事情?将用户重定向到登录屏幕,如果他/她没有被授权?成功登录后,用户应该被重定向到初始操作。

控制器

客户端 JQUERY

我可以从 firebug 控制台窗口看到,服务器返回:

期待您的帮助!

更新了可能的解决方案

0 投票
2 回答
980 浏览

asp.net-mvc-3 - 授权特定控制器下的所有操作(例如:adminController)

我想授权 adminController 下的所有操作。我怎样才能做到这一点。我有一个包含角色和用户的数据库。1. 管理员 2. 会员

我希望只有管理员可以访问 adminController 中的所有操作。

0 投票
1 回答
937 浏览

c# - 为 MVC3 设置自定义授权角色

目前我的控制器看起来像这样:

我在网上读到我可以将[Authorize]装饰器应用于每个动作,也可以应用于整个控制器本身。

有没有办法声明一个自定义装饰器,所以我会这样称呼它:

或者,也许这太麻烦了。我不介意创建一个新的装饰器并这样称呼它:

然后我会创建一个自定义类来验证登录的用户是否在角色中。

关于如何解决这个问题的任何建议?