MVC 3有一个很好的安全库吗?我对轻量级的User-Roles-Rights库感兴趣。我可以自己编写这个库,但我想看看是否有一个好的库可以节省一些时间。
我可以利用Asp.Net安全性,但我不希望有一个单独的数据库。是否可以将这些表添加到我的数据库中?
重要的一点是,这是一个Intranet应用程序,它将使用Active Directory身份验证。
答案 0 :(得分:1)
我会推荐Rhino Security。我在我的一些工作项目中使用它,这是一个非常顺利的旅程。您不需要单独的数据库。
最好的资源可能是Ayendes blog。该项目是开源的,并且正在GitHub上。
答案 1 :(得分:1)
如果您使用内置的ASP.NET安全模型(用户,角色等),则可以使用Aspnet_regsql.exe命令/向导将表添加到您自己的数据库中。
然后可以使用ASP.NET Web Site Administration Tool来执行添加用户和分配角色等操作(在Visual Studio中转到“网站”菜单,然后“ASP.Net配置”)。
在MVC中,您可以使用[Authorize]
属性(documentation)将控制器或操作方法标记为需要授权或特定角色或用户。
答案 2 :(得分:0)
一切都是关于:什么以及如何保障?
我最近基于CRM API创建了在线服务,我使用实体框架(作为我的ORM)和我自己的会员提供商和角色提供程序(我告诉this question)
在数据库中,我所拥有的只是一个简单的tblUsers
和tblRoles
。
使用 .NET Providers ,您最终会很高兴您可以轻松使用可用的方法,例如
[Authorize(Roles = "Partner, Admin")]
public ActionResult MyAction()
{
...
}
和
@if (Roles.IsUserInRole(Context.User.Identity.Name, "Admin"))
{
<div>You're an ADMIN, Congrats!</div>
}
为了保护访问密码,我向here询问了最佳方法,最后使用BCrypt,这非常容易使用。
如果您需要的不仅仅是这个,我会使用alexn回答并使用NHibernate与Rhino-Security一起使用。
答案 3 :(得分:0)
始终为您的用户/密码/角色设置单独的数据库,我建议您坚持使用.net身份验证提供程序。如果您的应用程序遭到入侵,黑客可能会发现如果将用户/角色/密码存储在同一个数据库中,则更容易阅读它们。即使你有加密密码,黑客也有彩虹表(如果他们能读取加密密码的话,他们也可以读盐,并强行离线)。
.net身份验证提供程序中内置了许多安全功能,在滚动自己的时候通常不会考虑这些功能(滚动自己的安全功能总是对任何与安全相关的问题都不好。)
另外,我将看看OWASP ESAPI for .NET中可用的内容,看看它是否有用。它不是MVC或特定于身份验证,但是您可以在整个应用程序中使用许多有用的功能。
https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API
简而言之,回答你的问题:是的.net有一个很好的安全库,内置它。