2017-06-04 53 views
0

我正在使用自定義策略。觸發電子郵件驗證

期望用戶旅途是: 1.用戶輸入在屏幕上1. 2.在屏幕1的成功驗證的電子郵件/密碼,用戶被髮送到屏幕2.在屏幕2,用戶必須輸入一個代碼發送到他們的郵箱。 (注意用戶已經在註冊期間驗證了電子郵件)

我被困在獲得2的工作。 當前策略如下所示: 步驟1輸出電子郵件聲明。

第2步將電子郵件聲明作爲輸入。

在步驟2中提供了一個預先填好電子郵件的可編輯文本框。沒有代碼被要求。但是,如果編輯電子郵件,則需要輸入代碼。

<TechnicalProfile Id="VerifyEmailAddress"> 
     <DisplayName>Local Account Signin</DisplayName> 
     <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
     <Metadata> 

     <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> 
     </Metadata> 
     <IncludeInSso>false</IncludeInSso> 
     <InputClaims> 
     <InputClaim ClaimTypeReferenceId="signInName" /> 
     </InputClaims> 
     <OutputClaims> 
     <OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="Verified.Email" Required="true"/> 
     <OutputClaim ClaimTypeReferenceId="objectId" /> 
     <OutputClaim ClaimTypeReferenceId="userPrincipalName" /> 
     <OutputClaim ClaimTypeReferenceId="authenticationSource" /> 
     </OutputClaims> 
     <ValidationTechnicalProfiles> 
     <ValidationTechnicalProfile ReferenceId="AAD-UserReadUsingEmailAddress" /> 
     </ValidationTechnicalProfiles> 

    </TechnicalProfile> 

回答

0

是啊,那給我造成了許多麻煩,

我基本上是用一個聲明轉換做

<InputClaimsTransformations> 
    <InputClaimsTransformation ReferenceId="CopyClaimToreadOnly" /> 
</InputClaimsTransformations> 
<InputClaims> 
<InputClaim ClaimTypeReferenceId="myAlreadyPopulatedClaim" /> 
<InputClaim ClaimTypeReferenceId="myAlreadyPopulatedClaim-Readonly" /> 
</InputClaims> 
<OutputClaims> 
    <OutputClaim ClaimTypeReferenceId="myAlreadyPopulatedClaim-Readonly" 
PartnerClaimType="Verified.Email" /> 
</OutputClaims> 

控制不是足夠聰明地認識到,你居住的要求,但您仍想要進行驗證,它預計電子郵件輸入和驗證將在同一頁面上執行,當您拆分它時,您必須執行此索賠複製

希望這有助於