An abp module to avoid duplicate user phone numbers being confirmed and providing phone number confirmation and phone number login features and more.
-
Install the following NuGet packages. (see how)
- EasyAbp.Abp.PhoneNumberLogin.Application
- EasyAbp.Abp.PhoneNumberLogin.Application.Contracts
- (Exclusive) EasyAbp.Abp.PhoneNumberLogin.Domain.OpenIddict
- (Exclusive) EasyAbp.Abp.PhoneNumberLogin.Domain.Ids4
- EasyAbp.Abp.PhoneNumberLogin.Domain.Shared
- EasyAbp.Abp.PhoneNumberLogin.EntityFrameworkCore
- EasyAbp.Abp.PhoneNumberLogin.HttpApi
- EasyAbp.Abp.PhoneNumberLogin.HttpApi.Client
- (Optional) EasyAbp.Abp.PhoneNumberLogin.MongoDB
- (Optional) EasyAbp.Abp.PhoneNumberLogin.Web
-
Add
DependsOn(typeof(Abp.PhoneNumberLoginXxxModule))
attribute to configure the module dependencies. (see how) -
Add
builder.ConfigurePhoneNumberLogin();
to theOnModelCreating()
method in MyProjectMigrationsDbContext.cs. -
Add EF Core migrations and update your database. See: ABP document.
-
Specify a auth server in the appsettings.json file of the Web/Host project.
{ "AbpPhoneNumberLogin": { "AuthServer": { "Authority": "https://localhost:44395", "ClientId": "MyProjectName_App", "ClientSecret": "1q2w3e*" } } }
-
Add the
PhoneNumberLogin_credentials
grant type in OpenIddictDataSeedContributor.grantTypes: new List<string> { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Password, OpenIddictConstants.GrantTypes.ClientCredentials, OpenIddictConstants.GrantTypes.RefreshToken, PhoneNumberLoginConsts.GrantType // add this grant type }
-
Find these cocdes in OpenIddictDataSeedContributor
if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials) { application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials); }
and add these codes on the following line
if (grantType == PhoneNumberLoginConsts.GrantType) { application.Permissions.Add($"gt:{PhoneNumberLoginConsts.GrantType}"); }
-
Run the DbMigrator project to create the client. Notice that you must manually add the grant type if your client already exists.
Ensure the EasyAbp.Abp.PhoneNumberLogin.Web
module was installed.
-
Customize the default login page (see demo).
-
Register an account with a confirmed phone number or confirm your phone number of your existing account.
-
Log out and try to log in by phone number and password (or verification code).
-
By Password
- Request
/api/phone-number-login/account/request-token/by-password
in POST method. (see input model)
- Request
-
By Verification Code
- Request
/api/phone-number-login/account/send-verification-code
in POST method to send and receive a verification code for confirming a phone number. (see input model) - Request
/api/phone-number-login/account/request-token/by-verification-code
in POST method. (see input model)
- Request
-
Refresh a Token
- Request
/api/phone-number-login/account/refresh-token
in POST method. (see input model) - You can also use
/connect/token
to refresh a token.
- Request
- Keep allowing users to set a phone number that has been used by others.
- Only confirmed phone numbers are allowed to be used for login.
- Avoid setting a non-numeric phone number.
- Avoid setting a phone number starting with 0.
- Avoid duplicate user phone numbers being confirmed.
- Razor pages log in by phone number and password widget.
- Razor pages log in by phone number and verification code widget.
- Request token by phone number and password.
- Request token by phone number and verification code.
- Simply generate and send verification codes.
- User confirm Phone number with verification code.
- Register an account with phone number and verification code.
- Reset password with phone number and verification code.
- Using EasyAbp.Abp.VerificationCode module to generate verification codes.
- Support EasyAbp integrated login module.
- Unit tests.