【发布时间】:2017-10-05 21:19:51
【问题描述】:
在我的 Spring Integration 项目中(使用基本授权的 Spring Security API),我试图访问 Principal 对象以读取用户名。
这是入站网关的结构:
<int-http:inbound-gateway request-channel="gatewayRequests"
reply-channel="gatewayResponses"
supported-methods="POST"
path="/api/v1/myservice"
request-payload-type="java.lang.String" reply-timeout="100">
<int-http:request-mapping consumes="application/xml" produces="application/xml"/>
<int-http:header name="principal" expression="T(org.springframework.security.core.context.SecurityContextHolder).context.authentication.principal"/>
</int-http:inbound-gateway>
我从这个回复中得到了上述表达: Spring Integration and http inbound adapter, how do I extract a principal user?
尽管身份验证成功,但我看不到主体 - 我的语法是否正确,期望表达式的结果映射到消息头?
如果我要使用以下内容,而不是映射到标头,我如何访问代码层中的 Principal 值(假设它被添加到有效负载中)?
<payload-
expression="T(org.springframework.security.core.context.SecurityContextHolder).
context.authentication.principal">
谁能帮帮我?
真诚地, 巴拉特
【问题讨论】: