我正在尝试使用Xamarin for Visual Studio(2015)开发一个小平台,它基本上从SQL Server数据库中读取字段并将它们排列在一个简单的UI上。
数据库只有一个表 Users ,其中包含一些用于提供用户信息的列,另外两个包含用户登录和查看其信息时应使用的用户名和密码。
我想过以类似的方式使用System.Data.SqlClient.SqlConnection类实现一个简单的SQL查询:
SELECT TOP 1 *
FROM Users
WHERE Username = @username AND Password = @password
或者可能会调用这样的程序
Easiest way to validate user in stored procedure?
使用System.Data.SqlClient.SqlCommand
...然后,如果登录发生,则存储一些变量中的字段,然后将它们链接到界面上的文本框。
我不知道这是否是正确的方法,看起来我甚至无法为登录实现REST服务,因为只有一个“主”用户可以访问数据库本身。
我在上述逻辑中看到的第一个问题是,如果用户已经过了太多时间,没有会话或令牌,我该如何检查用户是否已经登录?
我的问题是,有人有一些很好的教程和学习指南,也许有一些很好的例子,所以我可以解决这个认证/登录难度?
(抱歉任何错误,我是这个主题的新手,想学习)
答案 0 :(得分:0)
这并不是最好的做法。首先,通过参数化SQL查询,您正在做正确的事情。您需要确保没有SQL注入攻击。但基本上你认证的方式取决于你。如果要使用行业标准登录网站,可以查看oAuth。
但在您的情况下,您可能只想通过令牌保留用户名的静态字典。因此,当用户登录时,只需将guid添加到字典中并将该guid提供给用户即可。然后,在后续呼叫中,您将知道该用户是谁,因为他们将在每次呼叫时将令牌传递给您。只需确保您在24小时后将字典从字典中删除即可使令牌过期。
上面只是一个警告。我并不是说没有针对身份验证的最佳实践建议。我只是认为身份验证本身可以通过多种方式完成,而且因为您已经拥有“用户”表,所以似乎您希望身份验证由此驱动。
这是一个很好的article关于身份验证和安全性的好方法。还有其他一些措施,如多因素身份验证,可以添加到现有的身份验证方案中,以提高安全性。