我的团队目前使用WebForms进行项目,但我试图说服每个人切换到MVC。我遇到的一个问题是验证问题。我无法确定如何实现我们的登录过程以使用MVC。
我们的身份验证主要通过网络服务完成(我们会传递用户名和密码,并告知它是否有效),但有时我们会使用ActiveDirectory进行登录。
现在我们正在使用sessionstate来存储有关登录人员的信息。我如何将其转换为ASP.NET MVC?我已经阅读了很多关于各种事情的内容 - 声明,角色,MembershipProvider,IProvider,ASP.NET身份,OWIN,但是ASP.NET发展得如此之快以至于我害怕我阅读StackOverflow上的旧信息。
答案 0 :(得分:0)
现在我们正在使用sessionstate存储有关登录人员的信息。
不要这样做。永远。不在WebForms或MVC中。这是非常不安全和容易欺骗。永远不应将会话用于与身份验证或授权有关的任何事情。此外,Sessionstate是易失性的,IIS可以随时转储您的会话,与您的身份验证失去同步。
您的问题的解决方案非常简单。您已经在Web服务中进行了身份验证(尽管我在使用Sessionstate身份验证方法时也会怀疑这是否安全,但这是一个不同的参数)。您只需要身份验证部分,FormsAuthentication可以轻松提供该部分,以便将cookie设置为允许登录。
您验证服务,如果成功,则调用FormsAuthentication.SetCookie()
,然后将[授权]添加到要保护的所有MVC操作方法中。这真的很简单。
如果您需要有关于该用户的可用信息,那么您将创建一个自定义IIdentity和/或IPrincipal实现,该实现提供该信息,使其安全(由加密cookie保护)并且易于访问。