我如何推迟图像加载,直到Oauth认证后?



我继承了一个旧的MVC应用程序,它使用OAuth对Active Directory进行身份验证。我们的服务器管理员最近对服务器进行了一些更改,这需要在应用程序开始加载之前完成身份验证。最终的结果是,在用户完成身份验证之前,应用程序试图加载存储在服务器上的图像,所以当应用程序呈现时,这些图像是断开的链接。

我不知道很多关于身份验证是如何工作的,但我需要改变应用程序等待身份验证之前,它试图加载图像。我如何才能做到这一点,最好是在后端?在加载视图之前控制器能监听到什么吗?另一种方法是在身份验证后通过AJAX重新加载图像,但是,我也不确定应该让Javascript具体地侦听什么。

从架构的web端和API端分离的角度来看,这是值得考虑的。

通常,web资源,如JS和JPG文件是不安全的,因为他们不应该透露任何秘密。这确保了最佳性能,例如使用内容交付网络,以减少下载时间。它还允许呈现未经身份验证的页面,例如提示用户开始身份验证的页面。

只有对架构的API端的请求应该是安全的。这意味着它们需要凭证——cookie或令牌。对于网站,包含数据的HTML页面可以被认为是一个API资源。网站通常不保护图片请求。

如果你想避免在用户没有经过身份验证的情况下提供图片,那么就这样构建视图,从未经过身份验证的视图中删除图片,或者从不需要凭据的位置提供一些图片。

通过在API JSON响应中返回其url,可以以API驱动的方式提供图像。然后使用Javascript更新DOM并设置img标签的src属性。但是,您应该避免使用这种非标准架构。