Activities of "liangshiwei"

Hi,

Yes, we have an HTTP API you can use to send the reset password code email.

You can also send it manually:


// inject IdentityUserManager and IAccountEmailer service.
protected IdentityUserManager UserManager { get; }
protected IAccountEmailer AccountEmailer { get; }

//Find a user
var resetToken = await UserManager.GeneratePasswordResetTokenAsync(user);
await AccountEmailer.SendPasswordResetLinkAsync(user, resetToken, input.AppName, input.ReturnUrl, input.ReturnUrlHash);

Hi,

Yes, you can. but I don't know what's blocking you, can you explain it in detail? thanks.

The reason is that you are using the wrong redirect URL.

Should be http://localhost:4200

https://us05web.zoom.us/j/83932283381?pwd=Q0kvSXV2L3YvdTB1bDdBUkZhcWJ2Zz09

The authserver project.

The meeting has expired. I will check this problem and get back to you.

https://us05web.zoom.us/j/81240656843?pwd=NC85MkZlekF0ZUtYY2g2VEpFbG5IQT09

hide tenant switch

You can remove the CookieTenantResolveContributor

Configure<AbpTenantResolveOptions>(options =>
{
    options.TenantResolvers.RemoveAll((x => x.Name == CookieTenantResolveContributor.ContributorName));
});

the system directoly knows which tenant

You can custom the LoginModel. for example:

[ExposeServices(typeof(LoginModel))]
public class MyLoginModel : OpenIddictSupportedLoginModel
{
    private readonly ITenantRepository _tenantRepository;
    public MyLoginModel(
        IAuthenticationSchemeProvider schemeProvider,
        IOptions<AbpAccountOptions> accountOptions,
        IAbpRecaptchaValidatorFactory recaptchaValidatorFactory, 
        IAccountExternalProviderAppService accountExternalProviderAppService, 
        ICurrentPrincipalAccessor currentPrincipalAccessor, 
        IOptions<IdentityOptions> identityOptions, 
        IOptionsSnapshot<reCAPTCHAOptions> reCaptchaOptions,
        AbpOpenIddictRequestHelper openIddictRequestHelper,
        ITenantRepository tenantRepository) :
        base(schemeProvider, accountOptions, recaptchaValidatorFactory, accountExternalProviderAppService, currentPrincipalAccessor, identityOptions, reCaptchaOptions, openIddictRequestHelper)
    {
        _tenantRepository = tenantRepository;
    }

    public async override Task<IActionResult> OnPostAsync(string action)
    {
        using (CurrentTenant.Change(await FindTenantByUser()))
        {
            return await base.OnPostAsync(action);
        }
       
    }

    private async  Task<Guid?> FindTenantByUser()
    {
        var tenants = await _tenantRepository.GetListAsync();
        foreach (var tenant in tenants)
        {
            using(CurrentTenant.Change(tenant.Id))
            {
                ///...Find User and return the TenantId
            }
        }

        return null;
    }
}

Hi,

You can check the Azure document: https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/dotnet-core?view=azure-devops&tabs=dotnetfive#publish-artifacts-to-azure-pipelines

Yes, it works.

Showing 4061 to 4070 of 6693 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.1.0-preview. Updated on October 30, 2025, 06:33