.Net中的身份验证和授权

时间:2009-08-07 08:39:05

标签: .net asp.net-mvc authentication authorization

我正在努力为我的.Net应用程序选择用于身份验证和授权的内容。我在C#中使用ASP.Net MVC。在Java中,我发现Spring Acegi Securiyy非常容易实现安全网址,隐藏菜单和按钮甚至保护我的方法。

此外,我将使用Windows Active Directory存储用户个人资料。

.Net world提供的内容与Spring Acegi类似。无论如何这里是我想要的 -

  1. 基于角色保护网址的XML类型配置,即只有管理员角色可以访问/ admin / *页面等。
  2. 在UI上我想隐藏基于角色的菜单和按钮,如if(role is Admin)showButton。
  3. 虽然上面的内容已足够,但我也希望保护我的业务层。因为我也暴露了一个网络服务。
  4. 我知道我可以写一个客户,但如果有一些.net库可用,为什么要重新发明轮子。

3 个答案:

答案 0 :(得分:1)

  1. XML配置?不,不是基础MVC的东西。使用WebForms,您可以说web.config中的规则是基于XML的,但它们不适用于ASP.NET MVC - 请勿在web.config中使用路径/位置。授权由控制器类上的属性控制。但是有人写了XML authorization module可能适合
  2. 如果您愿意,可以在UI中执行此操作。您可以根据身份验证与未经身份验证的隐藏进行隐藏

            

    您是经过身份验证的用户

    您还可以使用Request.User对象更具体         

    超级用户

  3. 您可以使用用户名和密码保护Web服务,但是如果您想将身份从网站流向Web服务,因为网站调用更棘手。关于WCF身份验证和授权,这里已经有很多问题和答案。

答案 1 :(得分:0)

这是真的.net有很强大的引擎。 您需要查看RoleProvider和MembershipProvider的现有实现,或者创建自己的实现。 在web.config中,您需要指定要使用哪些提供程序,并且最少指定文件夹由角色保护。 为了实现业务逻辑层安全性,您只需要在任何地方提供可用性 Membership.GetUser,Roles.IsUserInRole,...

答案 2 :(得分:-1)

这不是一个真正的答案,但IMVHO,考虑实现您的自定义逻辑。确实,在这种情况下已经发明了轮子,但我发现自己在使用Asp.NET身份验证和授权时大部分都在苦苦挣扎。你可以快速启动和运行,如果你有一个简单的场景,这很好。当你想超越这个时,你最初可能会失去所有时间。但正如我之前所说,仅仅是我的意见。