Mule Http 基本身份验证 - 在变量中设置用户名
Mule Http basic authentication - set username in variable
我已经为我的 mule flow 应用程序实现了 HTTP 基本身份验证。
它侦听 HTTP,URI 是 http://localhost:8082/login。
<flow name="wsGetReport">
<http:listener config-ref="HTTP_Listener_Configuration" path="${wsPath}" doc:name="HTTP"/>
<logger level="INFO" message="## received" doc:name="Logger"/>
<http:basic-security-filter realm="mule-realm"/>
<flow-ref name="doSubFlow" doc:name="doSubFlow"/>
<logger level="INFO" message="## passed security" doc:name="Logger"/>
<http:static-resource-handler resourceBase="${app.home}/classes" doc:name="HTTP Static Resource Handler" defaultFile="index.html"/>
</flow>
我会检索用户在登录时输入的用户名,并将其显示在 http 静态资源(html 页面)中。
如何存储用于身份验证的用户名?
谢谢。
看看BasicAuthenticationFilter.extractAndDecodeHeader()。 Spring Framework 就是这样做的。
您可以使用 mel
获取基本身份验证的用户和密码,如下所示,并将其 存储 到变量中:-
<flow name="SpringBasicAuthExample">
<http:listener config-ref="HTTP_Listener_Configuration" path="/security" doc:name="HTTP"/>
<logger level="INFO" message="## received" doc:name="Logger"/>
<http:basic-security-filter realm="mule-realm"/>
<set-payload value="#[message.inboundProperties.'Authorization']" doc:name="Set Payload"/>
<set-payload value="#[message.payloadAs(java.lang.String).substring('Basic'.length()).trim()]" doc:name="Set Payload"/>
<expression-transformer expression="#[String credentials = new String(org.mule.util.Base64.decode(payload),java.nio.charset.Charset.forName('UTF-8')); String[] values = credentials.split(':',2); flowVars.user= values[0]; flowVars.pass=values[1];]" doc:name="Expression"/>
<set-payload value="#[['user':flowVars.user,'password':flowVars.pass]]" doc:name="Set Payload"/>
<parse-template location="index.html" doc:name="Parse Template"/>
<logger level="INFO" message="## passed security" doc:name="Logger"/>
</flow>
</mule>
最后,您可以将 用户名 和 密码 存储在变量中,然后将变量传递到 html使用 parse-template
动态显示 用户名 的文件:-
index.html:-
<html>
<body>
<b>UserName: #[flowVars.user]</b>
</body>
</html>
请注意您的 index.html
应该在资源文件夹中。在这里,一旦您获得 username 变量,您就可以将其存储或传递到任何您想要的地方:)
您可以通过基本身份验证获取用户名和密码,如下所示:
<set-session-variable variableName="userInfo" value="#[org.mule.util.StringUtils.split(new String(org.mule.util.Base64.decode(message.inboundProperties.'Authorization'.substring('Basic'.length()).trim()), java.nio.charset.Charset.forName('UTF-8')), ':')]" doc:name="Session Variable"/>
<logger message="user name = #[sessionVars.userInfo[0]] ***** password= #[sessionVars.userInfo[1]]" level="INFO" doc:name="Logger"/>
我已经为我的 mule flow 应用程序实现了 HTTP 基本身份验证。
它侦听 HTTP,URI 是 http://localhost:8082/login。
<flow name="wsGetReport">
<http:listener config-ref="HTTP_Listener_Configuration" path="${wsPath}" doc:name="HTTP"/>
<logger level="INFO" message="## received" doc:name="Logger"/>
<http:basic-security-filter realm="mule-realm"/>
<flow-ref name="doSubFlow" doc:name="doSubFlow"/>
<logger level="INFO" message="## passed security" doc:name="Logger"/>
<http:static-resource-handler resourceBase="${app.home}/classes" doc:name="HTTP Static Resource Handler" defaultFile="index.html"/>
</flow>
我会检索用户在登录时输入的用户名,并将其显示在 http 静态资源(html 页面)中。
如何存储用于身份验证的用户名?
谢谢。
看看BasicAuthenticationFilter.extractAndDecodeHeader()。 Spring Framework 就是这样做的。
您可以使用 mel
获取基本身份验证的用户和密码,如下所示,并将其 存储 到变量中:-
<flow name="SpringBasicAuthExample">
<http:listener config-ref="HTTP_Listener_Configuration" path="/security" doc:name="HTTP"/>
<logger level="INFO" message="## received" doc:name="Logger"/>
<http:basic-security-filter realm="mule-realm"/>
<set-payload value="#[message.inboundProperties.'Authorization']" doc:name="Set Payload"/>
<set-payload value="#[message.payloadAs(java.lang.String).substring('Basic'.length()).trim()]" doc:name="Set Payload"/>
<expression-transformer expression="#[String credentials = new String(org.mule.util.Base64.decode(payload),java.nio.charset.Charset.forName('UTF-8')); String[] values = credentials.split(':',2); flowVars.user= values[0]; flowVars.pass=values[1];]" doc:name="Expression"/>
<set-payload value="#[['user':flowVars.user,'password':flowVars.pass]]" doc:name="Set Payload"/>
<parse-template location="index.html" doc:name="Parse Template"/>
<logger level="INFO" message="## passed security" doc:name="Logger"/>
</flow>
</mule>
最后,您可以将 用户名 和 密码 存储在变量中,然后将变量传递到 html使用 parse-template
动态显示 用户名 的文件:-
index.html:-
<html>
<body>
<b>UserName: #[flowVars.user]</b>
</body>
</html>
请注意您的 index.html
应该在资源文件夹中。在这里,一旦您获得 username 变量,您就可以将其存储或传递到任何您想要的地方:)
您可以通过基本身份验证获取用户名和密码,如下所示:
<set-session-variable variableName="userInfo" value="#[org.mule.util.StringUtils.split(new String(org.mule.util.Base64.decode(message.inboundProperties.'Authorization'.substring('Basic'.length()).trim()), java.nio.charset.Charset.forName('UTF-8')), ':')]" doc:name="Session Variable"/>
<logger message="user name = #[sessionVars.userInfo[0]] ***** password= #[sessionVars.userInfo[1]]" level="INFO" doc:name="Logger"/>