我们如何在MobileFirst 8 Java Adapter for Authenticated用户之间传递数据,我尝试使用
保存信息public void putInUserSession(String key, String value, AdapterSecurityContext securityContext) {
if (securityContext != null && securityContext.getAuthenticatedUser() != null) {
Map<String, Object> hashMap = securityContext.getAuthenticatedUser().getAttributes();
hashMap.put(key, value);
}
}
但hashMap.put抛出“Unmodifiable Map”异常
答案 0 :(得分:0)
你可以在保存之前分享你如何设置你的属性。
以下是在UserLogin安全类的protected AuthenticatedUser createUser()
函数中设置属性的方法之一:
private Map<String, Object> attributes = new HashMap<String, Object>();
//Here put or save values in attributes
@Override
protected AuthenticatedUser createUser() {
return new AuthenticatedUser(userId, displayName, this.getName(),attributes);
}
我的猜测hashMap.put抛出“Unmodifiable Map”异常的原因之一是因为你的hashMap属于Map<String, Object>
类型而你正在保存类型为Map<String, String>
的值,这是不可能的。
您需要将Map<String, Object>
转换为Map<String, String>
,然后保存。
答案 1 :(得分:0)
MFP 8.0会话无状态。 (即)您无法将数据存储到http会话中。您将需要使用其他机制来存储会话数据。请参阅此处的讨论How to access IBM MobileFirst 7.1 default attribute store in session independent mode
知识中心记录了这种情况和解决方案。对于7.1,这会影响会话独立模式。在8.0以后,会话独立模式是唯一受支持的模式,您可以这样做。
在Java RESTful适配器中保存请求之间的应用状态
在早于V7.1.0的版本中,开发人员能够通过使用会话对象(即request.getSession())将应用状态存储在HTTP会话中。(参见WL.Server)。
如果您在从IBM MobileFirst Platform Foundation V7.1.0开始可用的与会话无关的模式下工作,则必须在会话外保留适配器的适用状态,例如,使用Cloudant®等数据库< / p>
样本也附在上面的链接中。
答案 2 :(得分:0)
由于MFP 8不允许从适配器在会话中写入数据,我们可以使用以下方法实现功能
因此我们可以创建自己的自定义方法来实现这一目标