Send SMS with Twilio Verify
With the Twilio Verify type, Twilio generates the SMS verification code, sends it, and checks the code that the user enters. Casdoor only starts the verification and asks Twilio whether the code is approved. Use it instead of Twilio SMS when you want Twilio to handle the codes, for example to send them without registering a sender number.
学习目标
- Create a Verify service in Twilio.
- Add Twilio Verify as an SMS provider in Casdoor and test it.
前提条件
- A Twilio account
- 拥有 Casdoor 管理控制台的管理员权限
Create a Verify service
- In the Twilio Console, copy the Account SID and the Auth Token.
- Go to Verify > Services and create a service with the SMS channel. Copy its Service SID, which starts with
VA.
The code length and the code lifetime are set on the Verify service. Keep the lifetime no shorter than the verification code timeout of Casdoor (verificationCodeTimeout in conf/app.conf, 10 minutes by default).
在 Casdoor 中添加提供商
-
在 Casdoor 管理控制台中,前往 Identity > Providers 并添加一个提供商。
-
Set Category to
SMSand Type toTwilio Verify. -
填写以下字段:
Casdoor field Twilio Required Client ID Account SID Yes Client secret Auth Token Yes Service SID Service SID Yes -
保存提供商并将其添加到您的应用。请参阅 将提供商添加到应用。
The provider works in all the places where Casdoor sends SMS codes: sign-up, sign-in with a code, binding or changing a phone number, password recovery, and SMS multi-factor authentication.
验证结果
Enter a phone number in SMS Test and send a test message. You get a code from Twilio Verify.
How the codes are checked
- The code that the user enters is checked by the Verification Check API of Twilio. Only an
approvedresult passes. A wrong code, or a verification that has expired, has already been approved, or has run out of attempts, counts as a wrong code. - Casdoor still applies its own limits: the resend interval, the code timeout, the failed attempt limits, and a code that has been used can't be used again.
- Twilio Verify sends its own message text, so the Template code field isn't used. The send SMS API of Casdoor also sends a Verify code instead of the content you pass.