- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 XPages 应用程序中,我想在 applicationScope 中存储一些( secret )信息,以使其可供所有用户访问。但是,应用程序的 ACL 配置为允许匿名用户阅读公共(public)文档。不过,我不希望他们访问 applicationScope。匿名用户是否可以访问/读取 applicationScope?
最佳答案
所有范围变量(包括 applicationScope
)都是 memory 上下文。在这种情况下,术语“范围”是指可以访问的范围。
requestScope
可以被当前页面内执行的任何代码访问,持续时间为单个 HTTP 请求,此时对象被销毁。任何其他页面,以及针对同一页面实例的任何后续请求,都有自己单独的 requestScope
。
viewScope
可以由在当前页面中执行的任何代码在该页面实例的生命周期内访问。其他页面——包括同一用户访问的页面——有自己的viewScope
。类似地,如果用户导航到另一个页面,然后导航回上一个页面,这就是一个新的 viewScope
,因为它是页面的一个新实例。
sessionScope
可以由在单个 HTTP session 期间在任何页面内执行的任何代码访问。这与浏览器中的 session cookie 相关,与身份验证无关。所以如果匿名用户稍后登录,它仍然是相同的 sessionScope
。如果他们稍后退出,他们仍然拥有相同的 sessionScope
,直到他们关闭浏览器或应用程序清除存储空间。
applicationScope
可以被当前应用程序 内任何页面内执行的任何代码访问。这就是允许它在用户之间共享的原因:如果 User1 正在一台计算机上访问 app1.nsf/page1.xsp
而 User2 正在访问同一页面 - 或不同的页面 - 在 相同的 NSF,它们具有相同的 applicationScope
——该变量为两个用户引用完全相同的内存中对象——因此通过由一个用户执行的代码存储的任何数据都可以通过其他用户执行的代码检索,直到应用程序清除存储。
但是,如果 User1 正在访问 app1.nsf
中的任何页面,而 User2(或匿名用户)正在访问 app2.nsf
中的任何页面,变量 applicationScope
引用每个用户的不同内存对象,因为他们正在访问不同的应用程序,即使其中有代码访问另一个应用程序中的磁盘数据的应用程序。 applicationScope
变量所引用的 in-memory 对象在每个 NSF 中是不同的,无论它可以访问的任何磁盘上数据的位置或create 恰好被存储。
所以你(以及在同一个 NSF 中编写代码的任何其他人)仍然需要注意如何构建你的逻辑以避免在 applicationScope
中存储敏感信息,然后将其暴露给不应访问它的用户,但您无需担心从访问相同内存范围的其他应用程序执行的代码。如果代码是从相同的 NSF 执行的,代码只能读取您存储在 applicationScope
中的数据。
关于xpages - 在匿名 XPage 应用程序中使用 applicationScope 的安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18866855/
我有三个具有不同范围的类: // default scope public class DefaultScopedInstance { private String someAttribute
我有一个带注释的 on 对象 @ApplicationScoped public class DbGraphConnectionLocator implements ServerStopTask {
这个问题已经有答案了: JAVA EE CDI Scopes, EJBs and managed beans serialization (1 个回答) 已关闭 6 年前。 我现在正在了解 Java
我目前没有集群环境,但我对集群环境中的@ApplicationScoped行为很好奇。是整个集群只有一个,还是仍然是集群中每个 JVM 一个? 我读过@Singleton gets created p
对于一个项目,我需要一个唯一的 ID 生成器。所以我想到了一个带有同步方法的单例。 由于遵循传统单例模式( private static instance )的单例在跨 session 中共享,我想知
我需要尝试在 JSF 应用程序中创建和发送电子邮件,但如果遇到异常,请将电子邮件存储在数据库表中并定期检查该表(例如每 10 分钟一次)以尝试再次发送电子邮件。 我的电子邮件可以正常工作,但想了解我应
在我正在处理的应用程序中,我需要获取所有 applicationScope 变量的名称列表,然后我需要循环遍历它们并过滤掉以已知字符串开头的变量,比如 $xyx。我认为 applicationScop
在我看来,@ApplicationScoped bean 仅在第一次使用 EL 在页面中访问时才启动。 当我查询 ApplicationMap 时,是否会创建 @ApplicationScoped b
我目前正在创建一个 EJB3 数据访问类来处理我的 Java EE 6 应用程序中的所有数据库操作。现在,由于 Java EE 6 提供了新的 ApplicationScoped 注释,我想知道我的
我想从另一个类中调用存储在 applicationScope 中的 ArrayList 我有一个类似这样的类,它在公共(public)变量名称 AL_data 中存储大量数据,方法 getAllDat
在应用程序范围的 bean 内,我们有一个 HashMap ,它为每个用户保存一些计数器(只是暂时的,不保存在任何地方)每个用户由它自己的子 HashMap 表示: Map> userValues =
我遇到了以下问题。我正在使用 CDI 的 Weld 实现。 我发现如果一个服务被注解为@ApplicationScoped然后@PostConstruct部分直到第一次使用该服务时才会被调用。这是重现
假设我们有一些无状态工厂。将它设为 @ApplicationScoped 是否更可取? 换句话说,只有当我们想在所有客户端之间显式共享它的状态时,我们才应该将 bean 设为 @Application
我有一个服务器端事件,并在 @MessageDriven bean 中接收一个对象,然后调用 @ApplicationScoped bean 中的一个方法以在已知区域设置中准备电子邮件。我需要资源包中
LoggerProducer.java是一个用于生成要注入(inject) CDI bean 中的记录器的类: @Inject Logger LOG; 完整代码: import javax.ejb.S
我需要编写一个 bean 来作为它被访问次数的计数器。 我正在考虑将 @ApplicationScoped bean 与 AtomicInteger 一起使用 @ApplicationScoped c
我有课 @ApplicationScoped public class Service{ private Map something ; private final Logger LOGGER =
我目前正在远离 Seam 的 @Factory注解。结合@Observer ,我可以这样做: @Factory(value = "optionsList", scope = ScopeType.APP
我正在使用 Mojarra 2.2.12,在我们的项目中,我们有一些 @ApplicationScoped bean 。例如: @ManagedBean @ApplicationScoped publ
在 XPages 应用程序中,我想在 applicationScope 中存储一些( secret )信息,以使其可供所有用户访问。但是,应用程序的 ACL 配置为允许匿名用户阅读公共(public)
我是一名优秀的程序员,十分优秀!