首页 文章

混合ASP.NET WebForms和MVC授权

提问于
浏览
2

我跟随了一些指南,除了授权部分外,所有设置和工作都已完成 . 现有的应用程序位于根web.config中,每个子文件夹都有自己的web.config,允许访问特定角色的页面 .

我的新理解是这种风格可以在控制器上使用,我应该使用 Authorize 属性 . 我用 [Authorize(Roles="AdminRole")] 装饰了我的测试“ HomeController ”类,但是当我尝试查看页面时,我得到了一个"Access Denied"页面 .

如果我将root web.config更改为 <allow users="*" /> ,则该页面可以正常工作 . 这是否意味着我添加到控制器的属性正在运行,但root web.config设置优先于它?我只是想尝试添加MVC来玩 . 我错过了什么吗?感谢您提供的任何见解 .

1 回答

  • 1

    啊,当您尝试在已经使用Web窗体的应用程序中使用MVC安全性时,这有点棘手 . 如果这是纯粹的mvc,那么选择很简单 . 如果你不能将mvc功能拉到一个单独的应用程序中,那么这会留下一点点泡菜 .

    我的第一个建议是尝试提取代码 . 如果您使用MVC仅提供restful功能,也可以查看MVC4 web api为您的应用程序提供api并共享它们之间使用的组件,这需要将它们从您的Web应用程序中拉出到域库或其他一些适当的命名图书馆 .

    话虽如此,不是100%确定allow users =“*”是否按预期工作,但我相信它是 . 它很容易测试,只需将Roles =“AdminRole”更改为Roles =“placeholder”并再试一次 .

    虽然设置这个可以杀死你的auth的其余部分,所以一个想法可能是将所有mvc路由放在特定的URL下,例如“/ api /”和web.config中的allow *到该路径,然后在所有的路径上使用mvc的安全性你的控制器方法 . 这对您的主要网络应用程序影响很小 .

相关问题