你好,
我正在使用 C# 开发服务器程序,但遇到了问题。当用户连接时,他的帐户就会经过身份验证,等等。这一切都很好。
但问题是服务器必须以连接用户的用户名、密码等作为参数来执行大量查询和函数。如果我只有 1 个客户端,这不会成为问题,但多线程和多个连接使这成为一项艰巨的任务。
目前我有几个函数,我必须这样调用:(主要是出于安全原因)
functionName(action, value, username, password)
对我来说,这似乎有点矫枉过正,因为我必须在一个 1 字符串中使用这个函数 5-6 次。
我想我只是在寻找一种存储多个连接用户的信息而不使线程混淆信息的好方法。
感谢您的宝贵时间。
我目前在做什么:
就像我之前说过的,此时客户端总是将他的用户名和加密密码发送到服务器。并且用户名和密码将始终作为大多数方法的参数添加,以便我可以检查数据库以查看数据是否正确。
它使代码看起来很棒且多余。
编辑:
此时用户将使用其密码和用户名登录。然后我对信息进行加密并以数据包的形式发送。
服务器解密信息并检查数据库中的用户名和密码。
之后,我创建 GUID 并将其发送回客户端,以便客户端可以保存 ID 并将其添加到每个后续数据包中。
现在我(服务器端)如何检查来自客户端的数据包中的 GUID 是否是合法的服务器端? -我只是暂时将 GUID 存储在数据库中吗?
最佳答案
您可能会考虑创建一个返回安全 token (可能是 GUID)的身份验证方法
Guid Authenticate(username, password)
并在方法中传递它而不是用户名.密码
functionname(action, value, securityToken)
关于C# 存储信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276184/