【问题标题】:User access restriction website用户访问限制网站
【发布时间】:2012-09-23 10:47:29
【问题描述】:

我正在使用 GAP 在 Python 中开发一个 Web 应用程序,并且我有多个用户,每个用户都有自己的资源。

我想知道的是,如果用户 A 拥有位于 /A/resource/ 的资源,我该如何限制用户 B 对该资源的访问?

我正在考虑使用 cookie,但我想知道是否有更好的方法。

【问题讨论】:

    标签: python google-app-engine web-applications web


    【解决方案1】:

    如果您使用用户服务:

    https://developers.google.com/appengine/docs/python/gettingstarted/usingusers

    您可以利用 google 为登录等提供的安全性。

    然后,对于每个资源,跟踪哪些“用户”拥有它,并仅将其提供给该用户和该用户单独。

    user = users.get_current_user()
    if user == valid_user_for_this_resource:
        #serve resource
    else:
        #deny access
    

    否则,您可以推出自己的登录服务并进行验证。

    【讨论】:

    • 我正在运行我自己的日志服务。我想知道的是如何验证访问该资源的用户是否拥有它。仅通过 cookie 吗?
    • 不确定您所说的“日志服务”是什么意思(登录服务!)。我做了一个类似的系统,其中每个用户的资源文件还包含创建该资源的用户。然后,当要求提供资源时,我通过用户服务检查当前登录的用户,将其与资源的“所有者”进行比较,如果它们匹配,则提供它。如果您想使用 cookie,那么也许可以查看 webapp2 会话,然后重新实现它可能会容易得多。 webapp-improved.appspot.com/api/webapp2_extras/sessions.html
    • 不,不是“仅通过 cookie”——您可以通过多种方式进行操作。您可以创建一个特殊的唯一 URL(通过 UUID 调用),该 URL 仅提供给资源的所有者 - 默默无闻的安全性。这实际上与 cookie 并没有太大的不同。我可以复制你的 cookie 并伪装成你,我可以复制那个唯一的 URL 并伪装成你,但我不能从用户服务复制你的用户 ID 并伪装成你,我必须登录.... .
    • 但我明白你现在在说什么了。 TBH我不知道,我只能说我用过的。正如我上面所说,您可以创建一个非常长的 URL,该 URL 对资源的所有者来说是唯一的,不需要 cookie。也许其他人会有一个想法,我会赞成你的问题。
    • 如果您的所有用户都有不同的 IP,您可以改用它,或者结合使用浏览器、IP 等来制作一个唯一的(ish)令牌,您可以使用该令牌跟踪用户以保持他们“登录”一旦认证。不需要 cookie。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2010-11-15
    • 2012-01-13
    • 1970-01-01
    相关资源
    最近更新 更多