繁体   English   中英

如何使用字符串键(串行键)验证登录用户以在ASP.NET MVC中执行某些特定操作?

[英]How to validate a logged in user against string key (serial key) to carry out some specific actions in asp.net mvc?

我是asp.net mvc的一个完整的初学者,也坦率地说也是编码。 我正在创建我的第一个MVC应用程序。 我设置了一个asp.net身份系统,它工作正常。 我的控制器中有一些操作方法,我希望已登录的用户提供一个序列号(14个字母数字字母),以便被授权执行某些任务。 我已经阅读了大量有关自定义AuthorizeAttribute的文章,但是与其提出解决方案,不如说是增加了难度。

这些串行密钥应保存在应用程序中的某个位置,也可以保存在后端数据库中。 想要访问特定操作方法的用户应提供一个序列号。 整个场景就像许可软件或防病毒软件一样。 关于此的任何实际示例或特定教程都将有很大帮助。

谢谢

您可以将串行密钥另存为会话变量。 但是,这意味着每次会话超时时,用户都必须为每个操作提供串行密钥。 最好创建一个单独的数据库表来保存可用于验证用户身份的用户ID的序列号。

如OP所要求的,例如哈希,我将在主题上进行扩展。 当我们谈到网络安全时,首先想到的是哈希。 什么是哈希? 散列是数据编码的一种方式。 例如,您有密码,如何保护它? 您将其哈希并存储在数据库中。 当用户第二次尝试登录时,您的密码将被散列并存储在数据库中。 现在,他输入了一个密码,您对它进行哈希处理,看看它是否与数据库中的密码匹配。

对于您的特定情况:

  • 您可能希望访问包含散列序列密钥值的存储。
  • 当用户输入某个序列密钥时,您可以使用相同的方法(用于对序列密钥进行哈希处理)对其进行哈希处理。
  • 在您的存储中寻找匹配项以获取用户提供的价值。 如果匹配,则用户已插入正确的序列号。

用盐散列的示例:

static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt)
{
  HashAlgorithm algorithm = new SHA256Managed();

  byte[] plainTextWithSaltBytes = 
  new byte[plainText.Length + salt.Length];

  for (int i = 0; i < plainText.Length; i++)
  {
   plainTextWithSaltBytes[i] = plainText[i];
  }
  for (int i = 0; i < salt.Length; i++)
  {
  plainTextWithSaltBytes[plainText.Length + i] = salt[i];
  }

  return algorithm.ComputeHash(plainTextWithSaltBytes);            
}

用于从散列数据MSDNSO 关于哈希的文章

.NET哈希类多次。

不幸的是,软件安全性很多。 在涉及Web应用程序时,必须先做一些研究,然后才能安全一些。

暂无
暂无

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

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