缓存 VS 授权
Caching VS Authorization
我说不清楚。
在我的网络应用程序中,我有具有不同角色的用户,所以我使用授权。在客户端,我使用 AngularJS,如你所知,angular 使用缓存。
一开始我不知道 angular 缓存。所以我的应用程序在 autorizathion 方面存在问题,因为我可以:像管理员一样登录,转到管理菜单(然后 angular 缓存菜单视图),像管理员一样注销并像用户一样登录,转到菜单,然后我可以看到管理菜单,因为被缓存。 注意:管理菜单和用户菜单是同一个视图(管理菜单扩展了功能)。
然后我发现如何禁用 angular 缓存并解决了这个问题。
当我读到这个话题时,我看到了各种各样的观点。那我想:
- 无法缓存需要授权的网络应用程序? check this great article
- 如果使用缓存,如何解决上述问题?
正如所引用文章的评论中所阐明的,您可以缓存授权内容。当你说,像管理员一样登录,像用户一样注销和登录时,我假设你没有使用同一个帐户。因为缓存通常不用于处理每个用户的角色在不清除缓存的情况下发生变化的情况。
授权内容(或真正针对每个用户的内容),您通常希望缓存客户端,因为它会很快填满服务器上的缓存。
对所有用户都相同的内容非常适合缓存在服务器上。
您可以使用 OutputCache 属性的 VaryByCustom 参数来改变服务器上缓存的内容。有关详细信息,请参阅 this article。
我说不清楚。
在我的网络应用程序中,我有具有不同角色的用户,所以我使用授权。在客户端,我使用 AngularJS,如你所知,angular 使用缓存。
一开始我不知道 angular 缓存。所以我的应用程序在 autorizathion 方面存在问题,因为我可以:像管理员一样登录,转到管理菜单(然后 angular 缓存菜单视图),像管理员一样注销并像用户一样登录,转到菜单,然后我可以看到管理菜单,因为被缓存。 注意:管理菜单和用户菜单是同一个视图(管理菜单扩展了功能)。
然后我发现如何禁用 angular 缓存并解决了这个问题。
当我读到这个话题时,我看到了各种各样的观点。那我想:
- 无法缓存需要授权的网络应用程序? check this great article
- 如果使用缓存,如何解决上述问题?
正如所引用文章的评论中所阐明的,您可以缓存授权内容。当你说,像管理员一样登录,像用户一样注销和登录时,我假设你没有使用同一个帐户。因为缓存通常不用于处理每个用户的角色在不清除缓存的情况下发生变化的情况。
授权内容(或真正针对每个用户的内容),您通常希望缓存客户端,因为它会很快填满服务器上的缓存。
对所有用户都相同的内容非常适合缓存在服务器上。
您可以使用 OutputCache 属性的 VaryByCustom 参数来改变服务器上缓存的内容。有关详细信息,请参阅 this article。