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