我想使用 Gatsby 制作一个静态生成的网站。这很好,但是我想要进行身份验证和授权,因为这是一个内部网站 - 只有我的公司的人才能访问。我想了想,没有一些服务器组件,安全地认证用户似乎是不可能的 (?), 没有某种后端。我想我可以使用 ASP.NET Core 来提供静态文件,并在这些静态文件之前使用 Google (for Work) 身份验证和授权。
静态文件模块不提供授权检查。通过它提供的所有文件,包括在wwwroot下的文件都是公开可用的。为了基于授权提供文件服务:
- 将它们存储在wwwroot之外和任何静态文件中间件可以访问的目录之外 - 通过控制器操作提供它们,返回一个应用了授权的FileResult
现在我有一个Index操作在我的HomeController上,它看起来像这样:
StaticFileHandler
从设计上不支持授权, 因为它只负责提供公开访问的静态文件。我通过在我的根操作上使用 Authorize
属性,并具有发出 Challenge
的登录操作使 Google 认证工作。进一步阅读处理静态文件的文档说:静态文件模块不提供授权检查。通过它提供的所有文件,包括在wwwroot下的文件都是公开可用的。为了基于授权提供文件服务:
- 将它们存储在wwwroot之外和任何静态文件中间件可以访问的目录之外 - 通过控制器操作提供它们,返回一个应用了授权的FileResult
现在我有一个Index操作在我的HomeController上,它看起来像这样:
[Authorize]
public IActionResult Index()
{
// TODO: Return static files based on incoming requested path.
return View();
}
我对这个解决方案不是很满意。我应该使用中间件来使整个事情工作,而不是使用MVC吗?这是正确的方法吗?有更好的方法吗?