【问题标题】:identifying type of an authenticated user识别已认证用户的类型
【发布时间】:2018-08-29 22:59:45
【问题描述】:

我正在构建一个普通用户和管理员都可以访问的应用。通过身份验证后,您可以访问它。

通过身份验证后,我需要检查当前用户是什么类型的用户。他/她是普通用户还是管理员?基于此,某些东西是否会被渲染。

我正在使用 Node、React 和 MongoDB。我怎么能这样做呢?这可以使用 JSON Web Tokens 来实现吗?

【问题讨论】:

    标签: javascript node.js reactjs authentication jwt


    【解决方案1】:

    当用户进行身份验证时,您可能会在某种用户数据库中查找它们。当您在数据库中找到它们时,您可以从数据库中读取它们是否具有管理权限。具体如何执行取决于您存储数据的方式。它可以像用户的布尔标志一样简单。

    一旦您知道用户已成功通过身份验证,Web 应用程序通常会建立服务器端用户会话。这涉及在浏览器上设置加密会话 cookie,然后将该会话 cookie 链接到您创建的服务器上的会话对象。该会话对象本身可以存储在数据库中,也可以保存在内存中(取决于部署需要)。一旦您看到该用户具有管理权限,您就可以在会话对象中设置一个属性来指示该用户具有这些权限。未来的渲染可以使用该标志来决定在页面中放置什么。

    可以使用 JSON Web 令牌代替 cookie,但这通常不是执行 Web 应用程序的首选方式,因为浏览器会自动为您管理 cookie,但您必须自己管理 JSON Web 令牌在您自己的应用程序代码中。您也可以在 cookie 中放置一个 JSON Web 令牌,但这不是必需的。

    【讨论】:

    • 感谢您的清晰解释。一个后续问题...您将如何生成加密会话 cookie?这个 cookie 是在服务器中生成然后传递给浏览器的吗?如果是这样的话,你会使用一个包来做到这一点吗? (我正在使用 npm)
    • @JaySeeCode - 如果您使用 express-session 之类的东西作为会话管理器,那么加密的会话 cookie 会自动为您处理。您可能还想使用passport 来进行身份验证。
    • 再次感谢您! :)
    猜你喜欢
    • 2013-06-09
    • 2016-04-06
    • 1970-01-01
    • 2021-10-21
    • 2015-03-27
    • 2021-10-18
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多