我对 ASP.NET 和 MVC 还很陌生,所以我正在尽我所能地学习...为此,我正在从头开始编写一个博客网站,但我在身份验证方面遇到了一些困难授权。
正如我所想,我真的不想使用任何脚手架,而且我会先使用数据库,所以不想使用 ASP.NET 身份为我创建表。
我很喜欢对密码进行哈希处理和加盐处理,并根据数据库检查用户,但我遇到的问题是将用户设置为登录状态并检查他们应该能够访问的内容。我真的很想使用授权属性,但如果最好不要使用也没关系,我愿意接受所有建议。你们能否解释一下(或建议一个教程)以下内容;
- 设置登录的用户(也许 formsauthentication.setauthcookie 这还好吗??)
- 将用户的角色添加到该 Cookie(或类似的内容)
- 不要让我的应用陷入严重的不安全状态。
- 让我使用 [Authorize(roles="dudes, otherdudes")]
简单吗?
到目前为止,我所有的研究似乎都让我沿着使用 asp.net 身份或与 owin 相关的东西以及与外部身份验证提供商交谈的路线,但我不想这样做。
我正在尝试学习和理解正在发生的事情,不是太深,只是更多“这个位设置cookie( session ??)”,“那个位添加角色”等
如果我在这里完全偏离目标,我们将不胜感激一些温和的指示。
非常感谢您的帮助。
最诚挚的问候, 乔恩
最佳答案
因此,您需要在 MVC 应用程序中实现自己的用户管理系统,而不是使用 Membership Provider。
当用户登录时,您可以从数据库获取相关的用户数据(自定义 AuthKey 或其他内容,加上用户的角色/权限)到 Session
变量中。现在,当用户尝试访问 URL 或执行操作时,您只需检查用户是否已登录以及他是否有权限执行此操作。此逻辑可以在自定义操作过滤器中实现,您可以通过从 ActionFilter
派生(或实现 IActionFilter
)并重写 OnActionExecuting
方法来创建该逻辑.
但是,请确保您实现的是 IActionFilter
而不是 IAuthorizationFilter
,因为您正在使用自定义授权逻辑。
现在,您可以在除 Login
Controller 之外的所有 Controller 上使用此操作过滤器,以防止用户执行不允许的操作。
Here是有关操作过滤器的教程。
关于c# - Asp.net mvc 5 自定义登录无需脚手架,先数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327294/