问题标签 [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 投票
2 回答
411 浏览

asp.net - Use different authorize attributes for controllers to access the same logic from different environments

I have an ASP.NET MVC website, where most of my controllers are decorated with Authorize attributes, to enforce forms authentication.

I'm about to make this website available on Facebook via a Facebook app, but for my FB users I want to use a different authentication/authorization, I want to use CanvasAuthorize attribute on my controllers.

The problem is that I can't use both on my controllers/actions, because then both of them would be enforced to access the relevant action, but I want only Authorize for the normal website and I want only the CanvasAuthorize when the website is accessed from FB (via FB app).

I started to

  1. refactor hugely my existing controllers to 'controllerhelpers'
  2. make existing controllers (with authorize attribute) use the controllerhelpers relevant method
  3. create new controllers (decorated with CanvasAuthorize) for the FB-app, which use the relevant controllerhelper methods also

But this is huge work, and I'm not sure whether this is the way to go, or there is a much easier an elegant way to work.

Of course I want to use the same views, and in my cshtmls I'm using specific controllers's Url.Action methods, so with my current approach when I'm inserting action-paths in my cshtmls (for eg. jQuery ajax Url properties) I have to make an if-statement to use for example the 'PersonalController' when the normal website is used and use the 'FBPersonalController' when the website is used as a FB app.

In this case PersonalController is decorated with [Authorize] and FBPersonalController is decorated with [CanvasAuthorize].

So, any feedback is appreciated ;)

Thanks!

0 投票
5 回答
30982 浏览

asp.net-mvc - 获取 ActionName、ControllerName 和 AreaName 并传入 ActionFilter 属性

我使用自定义 AuthorizationFilter 如下:

我在我拥有的每个操作的顶部使用此过滤器,并检查是否已授权,需要操作名称、控制器名称和区域名称。那么有什么方法可以在AuthorizeCore()use这样的方法中获取这些名称System.Web.HttpContextBase?如果答案是否定的,那么我如何获取这些名称并将其传递给属性,显然我不想手动添加每个名称,实际上就像ViewContext.RouteData.Values["Controller"]在控制器中一样:

有人对此有任何想法吗?

0 投票
2 回答
323 浏览

c# - 授权属性重用

我正在使用AuthorizeAttributes. 有没有办法自己实例化这些类?

目前我有一个AuthorizedAdmin和一个IsAdmin类也是如此。所以理想情况下IsAdmin应该使用这个AuthorizedAdmin类。有没有办法做到这一点?

我问是因为这AuthorizedAdmin真的很简单:

另一方面,IsAdmin该类更复杂并且功能重复。

谢谢

0 投票
1 回答
1834 浏览

asp.net-mvc - 如果 MvcSiteMapProvider 的操作标记为 [Authorize(Roles = "Administrator")],则在 MvcSiteMapProvider 中显示节点

目前,我有一个需要授权ControllerIndex()操作方法:

有了这个,相应的节点Mvc.sitemap将不会显示在面包屑中:

我想要的是无论如何都显示这个节点......

假设用户未通过身份验证。所以我希望面包屑显示这一点:

目前它只显示:

如果用户单击“客户”节点,他将被重定向到登录视图……好的,没关系!

SiteMapVisibilityProvider我尝试按照以下步骤实现自己的:

在调试时,我只能看到 Index 节点下方的节点,也就是说,在我目前的情况下,只有 Add 节点出现。表示 Index 操作方法的节点未显示在调试会话中。

有什么方法可以实现我想要的吗?

0 投票
1 回答
1505 浏览

asp.net-mvc - .Net MVC 应用程序中的单元测试声明

背景:我们正在使用 MVC4 并使用 WIF 进行声明/授权。我们将 Moq/MvcContrib 用于样机对象。我在这里查看并创建了 MockIdentity 和 MockPrincipal 对象——我需要它们吗?

目标:我有一个控制器类,它具有类级别属性,仅允许具有“经理”声明的用户访问操作。我想创建模拟用户并测试以查看没有“经理”声明的任何人是否可以访问这些操作。

我得到了模拟概念,但我只处理了模拟数据对象,并且很难弄清楚我需要哪些插件/类/方法/设置来完成我需要做的事情。

提前致谢。

0 投票
1 回答
1272 浏览

asp.net-mvc-3 - 具有 Role 和 AllowAnonymous 覆盖的管理员角色全局过滤器?

我根据Rick Anderson 的文章设置了一个全局过滤器,要求所有方法都需要登录。现在我想更进一步,要求所有操作仅授权给“管理员”角色,除非被文章中的 AllowAnonymous 属性或 [Authorize(Roles="Staff")] 覆盖,然后允许“Staff”和“管理员”访问。

我尝试在 LogonAuthorize 属性构造函数中添加角色:

..但这将所有操作限制为管理员,我不能在操作上使用 Authorize 属性覆盖。

0 投票
1 回答
762 浏览

asp.net-mvc - 具有排除属性的全局自定义授权属性

我有两个属性:

我定义ActionAuthorizeAttribute为全局属性。

所以我需要这3个项目:

1-如果没有登录(!User.Identity.IsAuthenticated):转到登录页面Accounts/LogIn。我必须提到LogIn标有 的操作AnonymousAllowedAttribute

2- 如果登录 ( User.Identity.IsAuthenticated) 并且操作或控制器已AnonymousAllowedAttribute授权,则授权为真(不需要任何授权)。

3- 如果登录 ( User.Identity.IsAuthenticated) 并且操作没有AnonymousAllowedAttribute返回CustomeCheck()方法

OnAuthorization()如您所见,我通过覆盖方法尝试第二个。

第三个如下:

但是当我没有登录时总是返回:

IIS 7.5 错误详情:

HTTP 错误 401.0 - 未经授权

使用此网址:http://myProject/Accounts/LogIn?ReturnUrl=%2f

问题出在哪里?怎样才能ActionAuthorizeAttribute实现这3个目标?

更新

我找到答案:问题是:AnonymousAllowedAttribute需要继承Attribute而不是AuthorizeAttribute

0 投票
1 回答
2924 浏览

asp.net-mvc - 在 AuthorizeAttribute 中获取帖子数据?

你好,

我将在让用户进入操作之前验证一些数据,如果数据没有验证,那么我需要重定向到另一个操作。

问题是我如何从 AuthorizeAttribute 中获取发送到操作的帖子数据?

0 投票
1 回答
2427 浏览

forms-authentication - MVC 4 Authorize attribute not recognizing forms auth from ASP.Net 3.5

I am creating a new MVC 4 app for a client that I had previously created ASP.Net 3.5 (VS 2008) apps for. I created a gateway app to launch several other ASP.Net 3.5 web apps, with the gateway app handling the login and the forms authentication ticket.

As long as all of the other web apps have the same settings for the forms authentication and machine key sections all other apps were able to use the forms auth objects to see if the user was authenticated.

I am now creating a new MVC 4 app using the same forms authentication settings in VS 2010 on an XP development box using IIS 5.x. (I have to do this) The problem is that the gateway app launches the MVC app fine with no login; however, if I add the Authorize attribute to initial controller the MVC app goes to the login and then the launch page as expected, however the link to the MVC app goes right back to the gateway login page.

Here are the web config sections

Any help would be appreciated Thanks, Paul

0 投票
1 回答
1321 浏览

asp.net-mvc-3 - 全局授权不起作用 - 导致呈现空白页面

我正在尝试为我的 MVC3 站点实现一个非常基本的登录方案。如果我理解正确,而不是向我的每个控制器类添加 [Authorize] 标记,我应该能够简单地实现一个全局设置。为此,我在 global.asax 中添加了以下内容:

在我的 webconfig 中,我添加了:

结果是生成的页面完全是空白的。查看 url,似乎 mvc 按预期重定向到我的登录路由,但页面为空。如果我注释掉 global.asax 中的代码并将 [Authorize] 标记直接放在每个控制器中,它就会按预期工作。

作为一种解决方法,我已经实现了我所阅读的 MVC2 最佳实践,即创建一个 BaseController:Controller 类,向其添加 [Authorize] 标记,然后将我所有控制器的固有特性更改为从BaseController 而不是 Controller。

目前这似乎工作得很好。

但是为什么 global.asax 实现不起作用呢?