【问题标题】:Hybrid MVC/WebForms app, Forms authentication混合 MVC/WebForms 应用程序,表单身份验证
【发布时间】:2015-12-09 21:29:39
【问题描述】:

tl;dr:我有一个 MVC 应用程序(使用身份),我们正在将一些 Web 表单页面(为表单身份验证编写)导入其中。我需要知道如何使用(现有)角色最好地保护这些 Web 表单页面。

更多细节:我们实际上是在 MVC 中重建一个旧的 Web 表单应用程序,并希望在 MVC 应用程序中重用一些旧的 Web 表单页面。我们已将它们放在 MVC 应用程序的子文件夹中,并让它们运行。

MVC 应用程序的大部分部分都是公开的,但有些页面需要身份验证和授权。为此,我们使用身份框架和[Authorize] 属性,它在幕后使用具有角色信息的数据库表。这些数据库表实际上是在表单身份验证下的遗留应用程序中使用的。一切正常。

困难在于如何最好地在 Web 表单页面上使用相同的权限系统。我知道身份可以使用 Web 表单来实现,但我不希望有一个完全独立的身份实现。我们也可以只回收旧的表单身份验证系统,尽管我无法弄清楚如何在 MVC 应用程序中实现它。

我尝试过的

老式的表单验证

这就是我们在旧应用中管理安全性的方式。

我放了

<system.web>
  <authorization>
    <allow roles="RelevantRole"/>
    <deny users="*"/>
  </authorization>
</system.web>

在包含 Web 窗体的目录内的 Web.config 文件中。这确实成功地将我重定向到身份验证页面,但登录后,我得到一个重定向循环。

【问题讨论】:

  • 你能做到吗?我也有同样的情况

标签: c# asp.net asp.net-mvc forms-authentication asp.net-identity


【解决方案1】:

您的 MVC 控制器本身或单个方法可以使用 AuthorizeAttribute 进行归因。

https://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.118).aspx

您将能够从此 MSDN 链接中找到您要查找的内容。

如您所说,使用此属性将消除对 web.config 中授权内容的需要。

【讨论】:

  • 我可以在 Web 窗体类上使用 Authorize 属性吗?
  • 这就像在询问您是否可以在实体框架类上使用授权属性。我不认为它是为了这个目的,因为 MVC 路由引擎不知道查看类授权属性而不编写自定义的 onactionexecuted 方法,该方法将反映并手动检查授权
  • 虽然从技术上讲,你可以,但我认为它不会像你想要的那样运行。 authorize 属性的目的是限制用户来自不同的视图而不是不同的模型
  • 好的。我已经更新了这个问题,使其更加清晰。我们已经在需要它的 MVC 控制器上使用了Authorize 属性。我正在寻找的是使用 MVC 应用程序使用的相同角色系统来保护 Web 表单 页面的最有效方法。所以,谢谢,但这不是我所需要的。
  • 如果您正在寻找方法或其他东西内部的功能,您应该仍然可以使用 Roles.IsUserInRole(User blah) 和类似的东西
猜你喜欢
  • 1970-01-01
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 2012-10-23
  • 2011-03-12
相关资源
最近更新 更多