我是一名实习生,我被分配了一个项目,我必须重新设计他们的客户支持网页。我是 ASP 新手,所以他们要求我将代码迁移到 MVC 4,以便我为未来的项目学习它。
该网页具有使用自定义类的表单身份验证,扩展MembershipProvider
并且RoleProvider
数据通过asp:SqlDataSource
查询显示,直接在 .aspx 文件中定义。
正如我所了解的,MVC 的重点是将前端(视图)、控制器和后端(模型、数据库访问)分开。我在这方面取得了一些进展,但我在身份验证方面遇到了问题。我已经设法使用显式MembershipProvider
和RoleProvider
初始化来启用登录(这应该按照 Web.config 中的配置自动完成)。通过调用MembershipProvider.ValidateUser()
和FormsAuthentication.RedirectFromLoginPage()
我验证用户详细信息并存储他们的用户名以在导航时保留它。
这有效,但删除了WebSecurity
方法的所有功能,以及特定的授权,例如[Authorize(Roles = "...")]
,没有按预期工作,它没有授权任何角色。Visual Studio 中的 MVC 示例项目SimpleMembershipProvider
用于用户身份验证,但我没有找到任何关于如何以与扩展MembershipProvider
类和覆盖其方法相同的方式实现自定义身份验证的项目或教程。
问题是已经有一个有很多用户的 T-SQL 数据库,这些用户链接到其他服务,所以显然我不能以任何方式改变它,也不能创建新的数据库/表。我看过的项目从头开始创建数据库,我还没有找到任何使用自定义身份验证/授权WebSecurity
和现有数据库的项目。
我想向您询问任何建议、示例或项目或教程的链接,我可以在其中看到如何实现WebSecurity
而不是FormsAuthentication
. 正如我所提到的,我已经有一个功能齐全的MembershipProvider
并且RoleProvider
我相信这一点SimpleMembershipProvider
并且SimpleRoleProvider
有类似的方法,所以这部分不应该那么难。另外,我不想混合使用 Webforms 和 MVC,我想要纯 MVC 应用程序。
我正在使用带有 C# 和 Razor 引擎、T-SQL 和 LINQ to SQL 的 ASP.NET MVC 4 进行数据库访问。