【问题标题】:Most efficient way of authorizing users over different pages on my site?授权用户访问我网站上不同页面的最有效方式?
【发布时间】:2013-03-05 17:22:57
【问题描述】:

我过去只制作过单页网络应用程序;有了这些,一旦用户连接,我就会读取存储在他们的 cookie 中的密码哈希,并将其与存储在我的数据库中的值进行匹配,以确定用户是否已经登录。

我现在想创建一个包含多个网页的网站,但我刚刚意识到每次用户进入新页面时都需要查询数据库;这对我来说似乎效率极低。有没有更好的方法来保持与客户端的持续会话而不会在此过程中使我的数据库/服务器紧张?

【问题讨论】:

  • 哪种编程语言?
  • @HankyPankyㇱ 我正在使用 Node.js;不过应该没关系吧?

标签: session authorization


【解决方案1】:

看看使用会话对象 Eg HttpContext.Session["UserAuth"] = true;

当您在第一页(例如登录)上对用户进行身份验证时,您可以像上面的示例一样创建一个会话。然后,一旦您重定向到下一页,只需检查会话是否确实存在并且有效。

检查会话:

   if(HttpContext.Session["UserAuth"] != null)
   {
     if(HttpContxt.Session["UserAuth"].toString() == "true")
     {
        //Session is valid and user is logged in.
     }
     else{
       //Session is invalid and user is not logged in.
         }
   }

因此,您要检查用户是否有效的每个页面都可以进行上述检查。只要您在数据库身份验证时在第一页上创建了会话。

请注意,上面的代码只是为了让您了解如何做到这一点。


“UserAuth”只是您为要存储的 Session 指定的名称。它绝对可以是任何东西。在这种情况下,您在 Session 中存储的值是“true”。

因此,当您检索 Session 的值时,您只需得到“真”,即用户已登录。

例如,当您将用户注销时,您可以以与最初创建会话相同的方式将会话“UserAuth”的值更改为 false。

例如

HttpContext.Session["UserAuth"] = false;

【讨论】:

  • 那么 userauth 是什么?随机生成的哈希?
猜你喜欢
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多