繁体   English   中英

今天如何在ASP.net MVC 4中进行授权?

[英]How to do authorization in ASP.net MVC 4 today?

我已经和ASP.net MVC合作了好几年了。 我过去开发的大多数应用程序都是通过旧版Web应用程序的链接访问的。 当用户到达我的某个应用程序时,我的应用程序只是从浏览器中读取一个cookie,表明该用户已通过遗留应用程序进行了身份验证。

现在,我终于开发了一个全新的Web应用程序,需要能够执行身份验证和授权。 我确信我可以做点工作,但我想知道今天最好的做法是什么。

从ASP.net WebForms,我熟悉MembershipProvider和RoleProvider类。 我对Windows Identity Foundatioin(WIF)也有一点熟悉。

但是,当我查看默认的ASP.net MVC 4应用程序时,“AccountController”类使用称为WebSecurity类的东西。 我想知道这是否意味着折旧MembershipProvider和RoleProvider类。

这应该是基本设置,具有由另一个服务器提供的用户名/密码身份验证以及对特权资源的基于角色的访问。

今天在ASP.net MVC 4中实现这些的最佳实践是什么?

身份验证在过去几年中一直处于变化之中,并且在Visual Studio 2013中稳定了一种称为ASP.NET身份的东西,它提供了基于声明的身份方法。 但是,这仍处于测试阶段,尚未发布。

在VS2010或2012(.net 4或4.5)的MVC4中,默认模板基于Webmatrix Web Pages技术WebSecurity类,后者又基于SimpleMembershipProvider,它本身基于MembershipProvider。

让我再说一遍。 WebSecurity使用MembershipProvider,但许多较新的功能只能通过将提供程序转换为ExtendedMembershipProvider或使用WebSecurity API来使用。

您仍然可以使用ASP.NET或MVC3中使用的旧SqlMembershipProvider,或MS已发布的任何其他提供程序,例如Universal Providers。

这里的关键是所有这些(ASP.NET身份除外)都基于成员资格,并且它们在某种程度上只是插入Membership API。

但是,成员资格实际上只是提供用户数据库和验证凭据的能力。 除登录外,它与验证网页或授权网页几乎没有关系。 这是FormsAuthentication或WindowsAuthentication(或其他)的用武之地,它们提供了IIdentity和IPrincipal的实现,它们是构建ASP.NET(和MVC)身份验证的基本构建块。

当您使用FormsAuthentication时,它基本上只是一个IIdentity实现。 当你使用RoleProvider时,它基本上只是一个IPrincipal实现。

这些提供了MVC中的工具,使用Authorize属性来控制对页面的访问,并提供使用User.IsInRole()方法来确定用户所处角色的能力。

基于声明的授权是Windows Communication Foundation中引入的一种新的授权模型。该模型比基于流行角色的安全模型(IIdentity,IPrincipal)解决了更多场景。当应用程序需要复杂和精细的控制来表达访问权限时,这非常有用。控制决定。“

基于声明的身份和访问控制指南

替代方案: SimpleMembership

由于MVC5 APS.NET身份最为推荐http://www.asp.net/identity

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM