GO中的用户认证系统

时间:2015-03-17 09:34:08

标签: authentication go

Go?

中是否存在预先制作的用户身份验证系统

我来自Ruby背景,我真的希望看到类似于Ruby on Rails'device的东西,这是一个完整的用户管理系统。它负责从创建表单到散列和salting密码等所有内容。它还负责将数据存储到数据库,设置会话等等。

我发现有一个名为goth的包允许社交登录(facebook,twitter ++),但它不处理用户凭据的存储。它也不允许使用电子邮件+密码进行“正常”注册。

我可以在Go上找到关于如何创建自己的基本,非常不安全的用户登录系统的教程。

我真的很想看到一个系统,它负责用户身份验证,并允许通过OAuth / OAuth2进行社交登录。有这样的事吗?

我所追求的解决方案很可能是Go网络框架的一部分或插件。

背景

我正在考虑将我的Rails应用程序转移到更高性能的框架,因为我当前的rails应用程序正在使用大量RAM。于是我的目光转向了Go。但是,如果没有可靠的用户身份验证系统,我无法转换为Go。制作自己的用户身份验证系统不是一个很好的做法。

1 个答案:

答案 0 :(得分:7)

简答:不。

长答案:Ruby on Rails是一个框架,Go是一种语言。为Go制作“通用”认证系统将是一项艰巨的任务,并且/或者必须非常设计,因为大多数auth系统依赖于会话存储和/或数据库。 Rails可以这样做(使用libs。比如Devise),因为像ActiveRecord和ActionController这样的框架部分提供了一个Devise可以与之交谈的抽象API。

在大多数情况下,你需要将几个库连接在一起,以获得你需要的东西。将事物“粘合”在一起是一种常用的做事方式,单片/厨房水槽框架通常不受青睐。

图书馆的一些建议:

这些不会为您提供不同的用户类型,为您编写查询等。我发现编写自己的“两个用户级别”(常规与管理员)身份验证使用服务器端会话相当简单,单个用户表和一个包含“需要身份验证”路由并检查会话的HTTP中间件,否则它会将用户重定向到登录页面(并保存当前URL以便重新定向)。