5

我计划开发一个有公共区域和私人区域的网站。该站点的两个区域将是使用 AngularJS 实现的单独的单页应用程序。我使用 Node.js 为前端创建一个 REST Web 服务。

私有区域只能通过身份验证(用户名/密码)访问。调用 REST API 调用也需要身份验证。

公共区域的文件将存储在子文件夹 /public 中,私有文件夹的文件将存储在子文件夹 /private 中。我使用 nginx 为公共区域提供静态文件。我还想用 nginx 提供私有区域的静态文件。

如何阻止用户直接访问文件,例如www.example.com/private/js/app.js

只有经过身份验证的用户才能打开 /private 文件夹中的文件。

4

1 回答 1

0

不幸的是,如果您使用 nginx 为静态私有文件提供服务,您将被限制为非常基本的身份验证方法,例如:

  • 基本身份验证:来自包含用户和密码列表的 htpasswd 文件。
  • LDAP auth:形成一个 LDAP 目录(这是一个 3rd 方模块)

但是,如果您的系统将用户存储在数据库中,那么 nginx 不知道如何对用户进行身份验证。此外,如果在您的系统中,身份验证必须与授权相结合,即 user1 只能访问/private/user1/kittenpicture.jpg和 user2 /private/user2/nakedpics.jpg,nginx 也不会帮助您,您别无选择,只能从 nodejs 提供您的私人文件(从那时起您可以将各种身份验证/授权中间件与用于提供静态文件的中间件相结合。

于 2013-07-31T19:56:02.807 回答