加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 提供Google身份验证背后的静态文件

发布时间:2020-12-16 07:42:25 所属栏目:asp.Net 来源:网络整理
导读:我想使用 Gatsby创建一个静态生成的站点.这一切都很好,但我希望有适当的身份验证和授权,因为这是一个内部站点 – 它只能由我公司的人员访问.我想到了这一点,如果没有一些服务器组件,在没有某种后端的情况下安全地验证用户是不可能的(?).我以为我可以使用ASP
我想使用 Gatsby创建一个静态生成的站点.这一切都很好,但我希望有适当的身份验证和授权,因为这是一个内部站点 – 它只能由我公司的人员访问.我想到了这一点,如果没有一些服务器组件,在没有某种后端的情况下安全地验证用户是不可能的(?).我以为我可以使用ASP.NET Core来提供静态文件,并在这些静态文件前面进行Google(for Work)身份验证和授权.

它看起来像StaticFileHandler doesn’t support authorization by design,因为它只负责提供可公开访问的静态文件.我设法通过使用我的root操作上的Authorize属性(侦听’/’)以及发出挑战的登录操作来使Google身份验证正常工作,并且用户将被重定向到Google进行身份验证.进一步阅读处理静态文件的文档说:

The static file module provides no authorization checks. Any files served by it,including those under wwwroot are publicly available. To serve files based on authorization:

  • Store them outside of wwwroot and any directory accessible to the static file middleware and
  • Serve them through a controller action,returning a FileResult where authorization is applied

所以现在我的HomeController上有一个Index动作,如下所示:

[Authorize]
public IActionResult Index()
{
    // TODO: Return static files based on incoming requested path.
    return View();
}

我对这个解决方案不是很满意.我应该使用中间件而不是使用MVC吗?这甚至是正确的方法吗?有没有更好的方法来做到这一点?

解决方法

Gatsby将生成一个静态内容文件夹,它没有任何授权概念.

我建议您需要在不同的层处理身份验证.例如,您可以在Web服务器层添加简单的基本授权标头要求.这在nginx或apache中是微不足道的.

在您的Gatsby项目中构建身份验证要么会破坏静态站点的目的,要么意味着您的内容可以作为JSON文件公开访问,但除非满足某些授权要求(不安全),否则您的React应用程序将拒绝加载它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读