混合MVC / WebForms应用程序,表单身份验证

时间:2015-12-09 21:29:40

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

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

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

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

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

我尝试了什么

好的'老式的表格认证

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

我把

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

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

1 个答案:

答案 0 :(得分:0)

您的MVC控制器本身或单个方法可以归属于AuthorizeAttribute。

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

您可以从此MSDN链接中找到您要查找的内容。

使用此属性将消除您对web.config中授权内容的需求。