我是一名学生实习生,我被分配了一个项目,我必须重新设计他们的客户支持网页。我是ASP的新手,所以他们让我将代码迁移到MVC 4,这样我就可以为将来的项目学习。
网页使用自定义类进行表单身份验证,扩展MembershipProvider
和RoleProvider
,数据显示{.1}}查询,直接在.aspx文件中定义。
正如我所知,MVC的意义在于分离前端(视图),控制器和后端(模型,数据库访问)。我已经取得了一些进展,但我在身份验证方面遇到了问题。我已经设法使用显式asp:SqlDataSource
和MembershipProvider
初始化启用登录(应该按照Web.config中的配置自动完成)。通过调用RoleProvider
和MembershipProvider.ValidateUser()
,我会验证用户详细信息并存储其用户名,以便在导航时将其保留。
这样做有效,但删除了FormsAuthentication.RedirectFromLoginPage()
方法的所有功能,以及特定授权,例如WebSecurity
,没有按预期工作,也没有授权任何角色。 Visual Studio中的MVC示例项目使用[Authorize(Roles = "...")]
进行用户身份验证,但我没有找到任何关于如何实现自定义身份验证的项目或教程,就像我扩展SimpleMembershipProvider
类并覆盖其方法一样
问题是已经存在一个包含大量用户的T-SQL数据库,这些用户链接到其他服务,所以显然我不能以任何方式改变它,也不能创建新的数据库/表。我看过的项目从头开始创建数据库,我没有找到任何使用MembershipProvider
和现有数据库的自定义身份验证/授权的项目。
我想问你有关项目或教程的任何建议,示例或链接,在那里我可以看到如何实现WebSecurity
而不是WebSecurity
。正如我所提到的,我已经拥有一个功能齐全的FormsAuthentication
和MembershipProvider
,我相信RoleProvider
和SimpleMembershipProvider
有类似的方法,所以它应该不那么难在这一部分。另外,我不想混合Webforms和MVC,我想要纯粹的MVC应用程序。
我正在使用ASP.NET MVC 4和C#以及Razor引擎,T-SQL和LINQ to SQL进行数据库访问。
答案 0 :(得分:1)
根据我的经验,在将旧网页从webforms迁移到mvc时,您必须“忘记”它始终是一个webform页面。
更直接地回答您的求助资源请求,这可能会有用:http://kylehodgson.com/2013/01/08/asp-netmvc-web-security-basics-csrf/