我正在为本地帐户登录启用“保持登录状态”设置。
目前,技术配置文件设置如下。
我如何设置单独的技术配置文件来捕获用户的响应,无论用户是加入还是退出 KMSI?另外,如何将 UI/UX 行为更改为“是”或“否”按钮,而不是单个复选框?
索赔提供者:
<ClaimsProvider>
<DisplayName>Local Account</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
<Metadata>
<Item Key="EnforceEmailVerification">true</Item>
</Metadata>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="recaptchaResponse" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="REST-VerifyRecaptcha" />
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
<ValidationTechnicalProfile ReferenceId="REST-SignUpOrEditProfile" />
</ValidationTechnicalProfiles>
</TechnicalProfile>
<TechnicalProfile Id="ForgotPassword">
<DisplayName>Forgot your password?</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isForgotPassword" DefaultValue="true" AlwaysUseDefaultValue="true"/>
</OutputClaims>
</TechnicalProfile>
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
<Metadata>
<Item Key="setting.forgotPasswordLinkOverride">ForgotPasswordExchange</Item>
<Item Key="setting.enableRememberMe">True</Item>
</Metadata>
</TechnicalProfile>
<TechnicalProfile Id="LocalAccountWritePasswordUsingObjectId">
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
并且,ClaimsProvider 在用户旅程中被调用,如下所示:
<UserJourneys>
<UserJourney Id="SignUpOrSignIn">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
<ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="GoogleExchange" />
<ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
</ClaimsProviderSelections>
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
</ClaimsExchanges>
</OrchestrationStep>
我如何从这个用户旅程中分支出来,以通过自定义按钮选择(是或否)收集用户选择“保持登录”的值?
我浏览了社区中的大量示例,但似乎找不到任何此类交互的示例。
使其成为单选按钮的唯一真正方法是使用自定义 UI 模板,并让 CSS 隐藏原始复选框并使用 JavaScript 注入是/否单选框,以在用户单击以下任一选项时选中/取消选中隐藏的复选框单选按钮。
本机不支持更改策略内的 KMSI 元素类型。
要捕获用户的响应(无论用户选择加入还是退出 KMSI),您可以向登录技术配置文件添加输出声明。
您需要创建一个声明来持有该价值:
<ClaimType Id="UserKmsiChoice">
<DisplayName>Indicates whether the user selects the me signed-in option</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
更新
SelfAsserted-LocalAccountSignin-Email
的输出声明以填充新声明:
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
<Metadata>
<Item Key="setting.forgotPasswordLinkOverride">ForgotPasswordExchange</Item>
<Item Key="setting.enableRememberMe">True</Item>
</Metadata>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="UserKmsiChoice" AlwaysUseDefaultValue="true" DefaultValue="{Context:KMSI}" />
</OutputClaims>
</TechnicalProfile>
此声明可以正常用于您的其余用户旅程。