تحويلات مطالبات التواريخ
توفر هذه المقالة أمثلة لاستخدام تحويلات مطالبات التاريخ لمخطط إطار العمل تجربة الهوية في Azure Active Directory B2C (Azure AD B2C). لمزيد من المعلومات، راجع تحويلات المطالبات.
AssertDateTimeIsGreaterThan
يؤكد أن تاريخًا واحدًا أحدث من تاريخ ثاني. تحديد ما إذا كان rightOperand
أكبر من leftOperand
. إذا كان الجواب نعم، يظهر استثناء. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
إدخال المطالبة | اليسار | سلسلة | نوع المطالبة الأولى التي يجب أن تكون بعد المطالبة الثانية. |
إدخال المطالبة | اليمين | سلسلة | نوع المطالبة الثانية، والتي يجب أن تكون أقدم من المطالبة الأولى. |
إدخال المعلمة | AssertIfEqualTo | منطقي | يحدد ما إذا كان يجب أن يؤدي هذا التأكيد إلى حدوث خطأ إذا كان المعامل الأيسر مساويًا للمعامل الأيمن. القيم المحتملة:true (افتراضي)أوfalse . |
إدخال المعلمة | AssertIfRightOperandIsNotPresent | منطقي | يحدد ما إذا كان يجب أن يمر هذا التأكيد إذا كان المعامل الأيمن مفقودًا. |
إدخال المعلمة | TreatAsEqualIfWithinMillseconds | int | يصف عدد المللي ثانية المسموح به بين الوقتين والتاريخين لمراعاة الأوقات المتساوية (على سبيل المثال: لحساب انحراف الساعة). |
يتم دائمًا تنفيذ تحويل المطالبات AssertDateTimeIsGreaterThan من ملف تعريف فنيللتحقق من الصحة يتم استدعاؤه بواسطة ملف تعريف فني مؤكد ذاتيًا. تتحكم DateTimeGreaterThan في بيانات التعريف للملف التعريفي الفني المؤكدة ذاتيًا في رسالة الخطأ التي يقدمها ملف التعريف الفني للمستخدم. يمكن أن تكون رسائل الخطأمحلية.
مثال على AssertDateTimeIsGreaterThan
ويقارن المثال التالي المطالبةcurrentDateTime
بالمطالبةapprovedDateTime
. حدث خطأ إذا كان currentDateTime
متأخرًا عنapprovedDateTime
. يعامل التحويل القيم على أنها متساوية إذا كانت في غضون فرق 5 دقائق (30000 مللي ثانية). لن يؤدي ذلك إلى حدوث خطأ إذا كانت القيم متساوية نظرًا لتعيينAssertIfEqualTo
علىfalse
.
<ClaimsTransformation Id="AssertApprovedDateTimeLaterThanCurrentDateTime" TransformationMethod="AssertDateTimeIsGreaterThan">
<InputClaims>
<InputClaim ClaimTypeReferenceId="approvedDateTime" TransformationClaimType="leftOperand" />
<InputClaim ClaimTypeReferenceId="currentDateTime" TransformationClaimType="rightOperand" />
</InputClaims>
<InputParameters>
<InputParameter Id="AssertIfEqualTo" DataType="boolean" Value="false" />
<InputParameter Id="AssertIfRightOperandIsNotPresent" DataType="boolean" Value="true" />
<InputParameter Id="TreatAsEqualIfWithinMillseconds" DataType="int" Value="300000" />
</InputParameters>
</ClaimsTransformation>
ملاحظة
في المثال أعلاه، إذا قمت بإزالة AssertIfEqualTo
معلمة الإدخال، وcurrentDateTime
يساويapprovedDateTime
، فسيتم طرح الخطأ. AssertIfEqualTo
القيمة الافتراضية هيtrue
.
- مطالبات الإدخال:
- اليسار: 2022-01-01T15:00:00
- اليمين: 2022-01-22T15:00:00
- معلمات الإدخال:
- AssertIfEqualTo: خطأ
- AssertIfRightOperandIsNotPresent: صواب
- TreatAsEqualIfWithinMillseconds: 300000 (30 ثانية)
- النتيجة: تم طرح الخطأ
استدعاء تحويل المطالبات
يستدعي ملف التعريف التقني Example-AssertDates
للتحقق من الصحة تحويل المطالبات AssertApprovedDateTimeLaterThanCurrentDateTime
.
<TechnicalProfile Id="Example-AssertDates">
<DisplayName>Unit test</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="ComparisonResult" DefaultValue="false" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertDates" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
يستدعي ملف التعريف التقني ذو التأكيد الذاتي ملف التعريف التقني Example-AssertDates
للتحقق من الصحة.
<TechnicalProfile Id="SelfAsserted-AssertDateTimeIsGreaterThan">
<DisplayName>User ID signup</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>
<Item Key="DateTimeGreaterThan">Custom error message if the provided right operand is greater than the right operand.</Item>
</Metadata>
...
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="ClaimsTransformation-AssertDateTimeIsGreaterThan" />
</ValidationTechnicalProfiles>
</TechnicalProfile>
ConvertDateTimeToDateClaim
تحويل نوع المطالبة DateTime
إلى نوع مطالبة Date
. سيزيل تحويل المطالبات تنسيق الوقت من التاريخ. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
InputClaim | إدخال المطالبة | dateTime | نوع المطالبة المراد تحويلها. |
OutputClaim | الإخراج | التاريخ | وقد تم استدعاء نوع المطالبة الذي يتم إنتاجه بعد تحويل المطالبات هذا. |
مثال على ConvertDateTimeToDateClaim
يوضح المثال التالي تحويل المطالبة systemDateTime
(نوع بيانات التاريخ) إلى مطالبة أخرىsystemDate
(نوع بيانات التاريخ).
<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- مطالبة إدخال: 2022-01-03T11:34:22.0000000Z
- مطالبات الناتج:
- مطالبة ناتج: 2022-01-03
ConvertDateToDateTimeClaim
تحويل نوع المطالبة Date
إلى نوع مطالبة DateTime
. تقوم عملية تحويل المطالبات بتغيير تنسيق الوقت وإضافة 12:00:00 صباحًا إلى التاريخ. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
InputClaim | إدخال المطالبة | التاريخ | نوع المطالبة المراد تحويلها. |
OutputClaim | الإخراج | dateTime | وقد تم استدعاء نوع المطالبة الذي يتم إنتاجه بعد تحويل المطالبات هذا. |
مثال على ConvertDateToDateTimeClaim
يبين المثال التالي تحويل المطالبة dateOfBirth
(نوع بيانات التاريخ) إلى مطالبة أخرىdateOfBirthWithTime
(نوع بيانات التاريخ والوقت).
<ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- مطالبة إدخال: 2022-01-03
- مطالبات الناتج:
- مطالبة ناتج: 2022-01-03T00:00:00.0000000Z
DateTimeComparison
يُقارن تاريخين ويُحدد ما إذا كان التاريخ الأول أحدث من التاريخ الآخر أو أقدم منه أو هو نفس التاريخ. النتيجة هي مطالبة منطقية جديدة بقيمة true
أو false
. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
إدخال المطالبة | firstDateTime | dateTime | التاريخ الأول لمقارنة ما إذا كان أحدث من التاريخ الثاني أو أقدم منه أو هو نفس التاريخ. تطرح القيمة الخالية استثناء. |
إدخال المطالبة | التاريخ والوقت الثاني | dateTime | التاريخ الثاني للمقارنة. يُتعامل مع القيمة الخالية على أنها التاريخ والوقت الحاليين. |
إدخال المعلمة | timeSpanInSeconds | int | الفترة الزمنية للإضافة إلى التاريخ الأول. القيم المحتملة: تتراوح بين السالب -2,147,483,648 إلى الموجب 2,147,483,647. |
InputParameter | عامل التشغيل | سلسلة | إحدى القيم التالية: same أو later than ، أو earlier than . |
الإخراج | النتيجة | منطقي | تم استدعاء المطالبة التي نتجت بعد تحويل المطالبات هذا. |
مثال على DateTimeComparison
استخدم تحويل المطالبات هذا لتحديد ما إذا كان التاريخ الأول بالإضافة إلى معلمة timeSpanInSeconds
أحدث من التاريخ الآخر أو أقدم منه أو هو نفس التاريخ. يوضح المثال التالي أن التاريخ الأول (2022-01-01T00:00:00) بالإضافة إلى 90 يومًا أحدث من التاريخ الثاني (2022-03-16T00:00:00).
<ClaimsTransformation Id="CompareLastTOSAcceptedWithCurrentDateTime" TransformationMethod="DateTimeComparison">
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_LastTOSAccepted" TransformationClaimType="secondDateTime" />
<InputClaim ClaimTypeReferenceId="currentDateTime" TransformationClaimType="firstDateTime" />
</InputClaims>
<InputParameters>
<InputParameter Id="operator" DataType="string" Value="later than" />
<InputParameter Id="timeSpanInSeconds" DataType="int" Value="7776000" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isLastTOSAcceptedGreaterThanNow" TransformationClaimType="result" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- firstDateTime: 2022-01-01T00:00:00.100000Z
- secondDateTime: 2022-03-16T00:00:00.100000Z
- معلمات الإدخال:
- عامل التشغيل: فيما بعد
- الفترة الزمنية الثانية:7776000 (90يوم)
- مطالبات الناتج:
- النتيجة: صحيحة
هل الموافقة على شروط الاستخدام مطلوبة
تحديد ما إذا كان نوع المطالبة dateTime
أقدم من تاريخ محدد أو أكبر منه. النتيجة هي مطالبة منطقية جديدة بقيمة true
أو false
. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
Item | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
InputClaim | termsOfUseConsentDateTime | dateTime | نوع المطالبة dateTime للتحقق ما إذا كانت أقدم من معلمة الإدخال termsOfUseTextUpdateDateTime أو أحدث منها. تُرجع قيمة غير معرفة النتيجة true . |
InputParameter | termsOfUseTextUpdateDateTime | dateTime | نوع المطالبة dateTime للتحقق ما إذا كانت أقدم من مطالبة الإدخال termsOfUseConsentDateTime أو أحدث منها. الجزء الزمني من التاريخ اختياري. |
الإخراج | النتيجة | منطقي | تم استدعاء نوع المطالبة التي نتجت بعد تحويل المطالبات هذا. |
استخدم تحويل المطالبات هذا لتحديد ما إذا كان نوع المطالبة dateTime
أقدم من تاريخ محدد أو أكبر منه. على سبيل المثال، تحقق ما إذا كان المستخدم قد وافق على أحدث إصدار من شروط الاستخدام (TOU) أو شروط الخدمة. للتحقق من آخر مرة وافق فيها مستخدم، خزّن آخر مرة قبِل فيها المستخدم شروط الاستخدام في سمة ملحق. عند تغيير صياغة شروط الاستخدام، حدّث معلمة الإدخال termsOfUseTextUpdateDateTime
مع وقت التغيير. ثم، استدعِ تحويل المطالبات هذا لمقارنة التواريخ. إذا أرجع تحويل المطالبات true
، تكون القيمة termsOfUseConsentDateTime
أقدم من القيمة termsOfUseTextUpdateDateTime
، ويمكنك أن تطلب من المستخدم قبول شروط الاستخدام المُحدثة.
<ClaimsTransformation Id="IsTermsOfUseConsentRequired" TransformationMethod="IsTermsOfUseConsentRequired">
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_termsOfUseConsentDateTime" TransformationClaimType="termsOfUseConsentDateTime" />
</InputClaims>
<InputParameters>
<InputParameter Id="termsOfUseTextUpdateDateTime" DataType="dateTime" Value="2021-11-15T00:00:00" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="result" />
</OutputClaims>
</ClaimsTransformation>
مثل على هل الموافقة على شروط الاستخدام مطلوبة
- مطالبات الإدخال:
- termsOfUseConsentDateTime: 2020-03-09T09:15:00
- معلمات الإدخال:
- termsOfUseTextUpdateDateTime: 2021-11-15
- مطالبات الناتج:
- النتيجة: صحيحة
GetCurrentDateTime
احصل على التوقيت العالمي المتفق عليه والتاريخ الحاليين، وأضف القيمة إلى نوع المطالبة. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
الإخراج | currentDateTime | dateTime | وقد تم استدعاء نوع المطالبة الذي يتم إنتاجه بعد تحويل المطالبات هذا. |
مثال على GetCurrentDateTime
يوضح المثال التالي كيفية الحصول على التاريخ والوقت الحاليين:
<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الناتج:
- currentDateTime: 2022-01-14T11:40:35.0000000Z
الخطوات التالية
- يمكنك العثور على المزيد من أمثلة تحويل المطالبات في مستودع GitHub لمجتمع متاجرة عمل-مستهلك في Microsoft Azure Active Directory