ASP.NET MVC 5自定义登录,无需脚手架,数据库优先 - c#

我对asp.net和mvc还是很陌生,所以我正在努力学习尽可能多的知识...为此,我从头开始编写博客网站,但是我对身份验证和授权有些困惑。

由于我倾向于不真正使用任何脚手架的东西,所以我首先要使用数据库,所以不希望asp.net身份为我创建表。

我对散列和加盐密码很酷,并对照数据库检查用户,我遇到的麻烦是将用户设置为登录状态并检查他们应该能够访问什么。我真的很想使用authorize属性,但是如果最好不要这样做,我欢迎所有建议。你们可以解释以下内容(或为该课程提供建议的教程)吗?

设置登录的用户(也许formsauthentication.setauthcookie还是不错吗?)
将用户的角色添加到该Cookie(或类似的代码)
不要离开我的应用程序可怕的不安全感。
让我使用[Authorize(roles =“ dudes,otherdudes”)]

简单?

到目前为止,我的所有研究似乎都使我采用了asp.net身份或与owin有关的东西,并与我不想做的外部身份验证提供程序进行了交流。

我正在尝试学习和理解正在发生的事情,而不是太深入,只是更多地是“该位设置cookie(sessions ??)”,“该位添加角色”等

如果我完全不在目标范围内,可以参考一些温和的指导。

非常感谢您的帮助。

最好的祝福,
乔恩

参考方案

因此,您需要在MVC应用程序中实现自己的用户管理系统,而不是使用成员资格提供程序。

当用户登录时,从数据库中获取相关数据后,可以在Session变量中设置相关的用户数据(自定义AuthKey或其他内容,以及用户的角色/权限)。现在,当用户尝试访问URL或执行操作时,您只需要检查用户是否已登录以及他是否具有登录权限。可以在自定义动作过滤器中实现此逻辑,您可以通过从ActionFilter派生(或实现IActionFilter)并覆盖OnActionExecuting方法来创建该自定义动作过滤器。

但是,请确保您实现的是IActionFilter而不是IAuthorizationFilter,因为您正在使用自定义授权逻辑。

现在,您可以在除Login控制器之外的所有控制器上使用此动作过滤器,以防止用户执行不允许执行的操作。

Here是有关操作过滤器的教程。

MVC C#TempData - c#

有人可以解释一下MVC中TempData的目的。我了解它的行为类似于ViewBag,但除此之外它还有什么作用。 参考方案 TempData应该是一个短暂的实例,您应该 仅在当前和后续请求中使用它!以来 TempData以这种方式工作,您需要确定下一步 要求,并且重定向到另一个视图是您唯一的时间 可以保证这一点。因此,唯一使用TempData的方案 在重定向时…

asp.net oledbcommand返回所有行 - c#

我正在使用Oledbconnection连接到Microsoft Access数据库,并且正在使用OleDbCommand检索一些信息。我在数据库中有一个名为retrieveInfo的查询,该查询检索3行数据。字段中有一些重复项,但是应该是这样。我的数据如下所示: Name Email A [email protected] B [email protected] B C@gmai…

asp.net使用客户端验证而不发布到服务器 - c#

我有一个很长的表格,分为几个部分。我想利用内置的ASP.NET验证控件而不在提交表单之前将其回发到服务器。为了提供更多的上下文,让我解释一下我的想法。该表格分为几部分,每个部分都有一个“下一步”按钮。单击“下一步”按钮时,将使用ASP.NET包含的客户端代码来验证该部分。如果该部分有效,则jquery方法将隐藏该部分并显示下一个。当用户到达表单的最后部分时,…

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…

当浏览器在MVC中关闭时,阻止会话过期 - c#

我遇到会话问题在关闭浏览器后,我的会话将过期,并且在重新打开浏览器后,我必须再次登录。我不想使我的会话在浏览器关闭时过期。我在我的web.config文件中使用它: <authentication> <forms loginUrl="~/account/login" name="astroswamig"…