为跨平台移动应用创建身份验证逻辑的最佳做法

时间:2016-12-01 23:08:31

标签: c# rest authentication xamarin login

我正在尝试使用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服务,因为只有一个“主”用户可以访问数据库本身。

我在上述逻辑中看到的第一个问题是,如果用户已经过了太多时间,没有会话或令牌,我该如何检查用户是否已经登录?

我的问题是,有人有一些很好的教程和学习指南,也许有一些很好的例子,所以我可以解决这个认证/登录难度?

(抱歉任何错误,我是这个主题的新手,想学习)

1 个答案:

答案 0 :(得分:0)

这并不是最好的做法。首先,通过参数化SQL查询,您正在做正确的事情。您需要确保没有SQL注入攻击。但基本上你认证的方式取决于你。如果要使用行业标准登录网站,可以查看oAuth。

但在您的情况下,您可能只想通过令牌保留用户名的静态字典。因此,当用户登录时,只需将guid添加到字典中并将该guid提供给用户即可。然后,在后续呼叫中,您将知道该用户是谁,因为他们将在每次呼叫时将令牌传递给您。只需确保您在24小时后将字典从字典中删除即可使令牌过期。

上面只是一个警告。我并不是说没有针对身份验证的最佳实践建议。我只是认为身份验证本身可以通过多种方式完成,而且因为您已经拥有“用户”表,所以似乎您希望身份验证由此驱动。

这是一个很好的article关于身份验证和安全性的好方法。还有其他一些措施,如多因素身份验证,可以添加到现有的身份验证方案中,以提高安全性。