问题标签 [asp.net-authorization]

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 投票
4 回答
2091 浏览

asp.net - Silverlight/.Net RIA 服务 - 授权工作示例?

在将 Silverlight 与 ASP.Net 结合使用时,我已经关注了许多关于 Ria Services 带来的功能的教程和演练/博客。本质上,我正在寻找 Ria Services 显然可以从 ASP.Net 获取的授权功能的实时工作示例。(如果它也可以与 ASP.NET MVC 一起使用,那就更好了)

Ria Services 授权实施失败的示例

导航到此页面上的实时演示链接....失败

这个可能有用,但是我无法在我的办公室计算机上使用它(奇怪的设置似乎无缘无故地破坏了代码)

0 投票
1 回答
697 浏览

c# - ASP.NET MVC - 授权重构

我看到这段代码的问题是它会被大量重用;由经过身份验证的用户(站点管理员除外)编辑/创建的任何内容都只能访问他们的“工作室”对象。

我对你们所有人的问题;您将如何重新考虑这一点,以便可以将服务层从客户端的知识中抽象出来。我打算稍后在独立的桌面应用程序中重用服务层。

请阐明我的错误方式!我非常感激。

AuthorizeOwnerAttribute.cs (AuthorizeAttribute)

在我的“用户”控制器内部,将此属性附加到任何需要所有者的方法

现在,在我的服务层中,我正在检查传递下来的 IPrincipal 是否有权访问被请求的对象。这是它变得臭的地方:

用户服务.cs

0 投票
2 回答
2370 浏览

c# - 对未经身份验证的 ASP.NET MVC 请求运行授权筛选器和操作筛选器

我用几个动作过滤器装饰了我的基本控制器。他们工作正常。

其中一个过滤器设置请求 - 执行诸如基于域设置文化等事情。

我还有一些需要使用 Authorize 属性进行授权的操作。

我的问题是,当用户尝试请求他们无权访问的页面时,授权过滤器会启动并将他们重定向到一个页面,告诉他们他们无法查看该页面。

问题是操作过滤器永远不会运行,因此永远不会设置文化和其他请求数据。这有效地导致视图中的语言错误和其他数据丢失。

我知道授权过滤器首先运行,但我的问题是:我如何设计这个,以便我可以确保在返回视图之前始终运行某些方法,而不管授权如何。

希望这是有道理的。

0 投票
2 回答
921 浏览

asp.net - ASP.Net - 跟踪状态和会话变量的当前最佳实践是什么?

我们正在创建一个新的面向消费者/公众的 ASP.Net Web 应用程序。有两个担忧:

-- 使用 cookie 或 cookieless 表单身份验证?

--如果我们决定完全不使用 cookie,您将如何存储本来会存储在 cookie 中的数据(客户 ID、AffiliateID 等)。ASP.Net 身份验证框架是否跟踪诸如 CustomerID 之类的内容?

0 投票
2 回答
1272 浏览

c# - 允许公共访问 WebForms + MVC 站点中的控制器操作

我有一个旧的 ASP.Net 网站,我正在将 MVC 集成到其中。我在 web.config 中使用带有标准授权标签的 webforms 身份验证:

过去,我可以使用以下位置公开各种文件夹:

加上 MVC 和一些控制器,我需要将一些控制器操作完全公开。但是,我无法使用 web.config 中的位置标记来执行此操作。如果我在未经身份验证的情况下尝试访问操作的 URL,ASP.Net 会将我重定向回我的登录页面(在 web.config 中指定)。我没有在任何这些控制器操作上使用授权属性。

如何在破坏所有需要保护的网络表单的安全性的情况下开放对这些内容的访问?

编辑:

我想明确说明我正在对我想要保护的操作使用 [Authorize]。我想公开的问题中的操作没有使用 [Authorize] 属性,除非登录,否则仍然无法访问。

编辑2:

我做了一些 IIS 跟踪,并认为我已经说服自己这确实是身份验证失败,而不是其他错误。这是我尝试访问的位置和路线的示例:

和路线:

以及失败的 URL:

我实际上有一个更通用的路线来处理这个问题,但添加了这个以消除任何疑问。无论如何,这在登录时都可以正常工作。

0 投票
1 回答
1808 浏览

asp.net-mvc - 自定义授权属性(后续)

好的跟进这个线程,这就是我想出的......

我是如何/为什么想出这个的?因为我相信 AuthorizeAttribute 工作流程如下:

  1. 首先,AuthorizeCore 被触发。如果返回 true,则用户已获得授权。如果返回 false,则触发 HandleUnauthorizedRequest。那正确吗?
  2. 我在某处读到需要使用new关键字来覆盖属性。因此,这就是我覆盖 Roles 属性的方式。但是,如果覆盖属性是初始属性的不同类型(基类中的那个),那会隐藏它还是创建一个完全不同的属性呢?

所以你怎么看?这真的应该工作吗?我现在无法测试它,因为我还没有设置UI(等待设计师完成设计)......事实上,这是我第一次体会到TDD的好处,我曾经认为它完全愚蠢而无用,但我错了:)

PS:在这个线程上,@tvanfosson 正在设置上下文的 CachePolicy(我认为),有人可以解释一下为什么我可能需要这样做吗?

提前致谢。

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 投票
1 回答
783 浏览

asp.net - ASP.NET MVC 项目架构问题——授权和会话

我正在完成一个启动另一个程序员的项目。改变整个架构是不可能的,但有些东西我想覆盖。即 - 授权,以及存储当前用户会话的方式。该项目代表一个通过soap-services与服务器通信的客户端。在服务器上,有 Security-Services,还有其他几个,例如 A-service、B-Service。安全服务提供用于初始化其他服务的身份验证和会话密钥。该项目是用 ASP.NET MVC3 编写的,它是一个用户模型的头部,它被实现为 singletone-Class,它描述了与服务交互的方法。授权是如何工作的 - 有一个带有重写 ValidateUser 方法的 CustomMembershipProvider,它在安全服务上运行。

主要问题是现在会话存储在内存中:web.config:

设置 SqlServer-mode 是有问题的,因为它很难将 SiteUser 序列化。我怎样才能解决这个问题?并且授权存在问题 - 如何正确地使用服务会话进行 Asp.Net 同步会话?对不起我的英语,如果需要澄清 - 问问题。谢谢你。

0 投票
4 回答
1761 浏览

asp.net - ASP.NET MVC2 中非常简单的单用户登录?

我正在构建我的网站,我想限制我网站的一部分(管理部分)正常公开显示。

  • 我正在使用 LINQ 进行数据库访问。
  • 我有一个服务类来处理通过 LINQ 对数据库的调用
  • 我有整个网站运行,除了登录部分。

到目前为止,我只能找到使用 MembershipProvider 和/或 RoleProviders 等的示例。老实说,对于我想要的东西来说,这似乎工作太多了。如果您在输入字段中输入正确的密码,这一切所要做的就是让您进入。

我真的不能避免提供者吗?

0 投票
2 回答
3297 浏览

asp.net-membership - ASP.NET 表单身份验证 - 多次登录

我敢肯定这个问题的变体以前已经被问过很多次了,但我找不到答案。

我有一个网站,它是一个在线商店。我们有以下登录/帐户管理要求:

Admin 角色的成员登录 /Admin Pro 角色的成员登录 /Pro Customer 角色的成员没有他们登录的特定区域,但在结帐时我们希望他们能够登录,这样他们就不会登录不必再次填写他们的交货详细信息。

因此,我们希望 url 结构类似于:

/Checkout.aspx (/login form) /Admin/Login.aspx /Pro/Login.aspx (这里唯一的小例外是我们确实希望用户能够访问 /Pro/Register.aspx 页面而无需登录在 - 出于显而易见的原因)

我读到如果我从主 web.config 中删除身份验证配置并在每个 pro 和 admin 文件夹中创建一个 web.config 文件,这是可能的。在 IIS 7 中,我将文件夹更改为应用程序,但页面无法从主站点访问母版页。

我是否以正确的方式进行?

提前致谢。