6.2.5.2. 会话属性
访问组中可以定义该组中用户会话的属性列表。这些属性可以在设置约束时使用。开发阶段可以在应用程序代码中检查会话属性是否可用,最终用户访问组的系统行为可以在运维阶段控制。
登录时,用户访问组的所有属性集合,以及组以上树形层级的属性集合都会被置于用户会话中。如果不同树形层级有相同的属性,最上层的会生效。所以,在低树形层级组中覆盖属性值是不可能的。如果发现有覆盖倾向,会在服务器日志中显示 WARN
级别日志。
在 Access Groups - 访问组 界面的 Session Attributes - 会话属性 标签页点击 Create - 创建 创建会话属性:
需要指定:唯一的属性名,数据类型和属性值。
在应用程序代码中使用 session 属性:
@Inject
private UserSessionSource userSessionSource;
...
Integer accessLevel = userSessionSource.getUserSession().getAttribute("accessLevel");
使用 session$
前缀,会话属性可以在约束中做为 JPQL 参数使用:
{E}.accessLevel = :session$accessLevel