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