Hi,
We plan to release 8.2 on May 14.
You should always use the oauth2.0 when you use Postman,
They were added in my previous /account/login call
Call the /connect/token to get the token instead of /account/login
Remove cookie from headers.
Hi,
I guess this is because the CLI has no permission to write files to C drive
Hi:
https://docs.abp.io/en/commercial/latest/startup-templates/application/azure-deployment/azure-deployment?UI=MVC&DB=EF&Tiered=No https://docs.abp.io/en/commercial/latest/startup-templates/application/azure-deployment/step1-create-azure-resources?UI=MVC&DB=EF&Tiered=No
Hi,
Sorry for that.
Will this can help you?
using IdentityModel;
using IdentityModel.OidcClient;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
using MyProject.Localization;
using MyProject.Maui.Oidc;
using Volo.Abp.Account.Localization;
using Volo.Abp.Autofac;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.IdentityModel;
using Volo.Abp.Identity.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.Security.Claims;
using Volo.Abp.Validation.Localization;
using Volo.Saas.Localization;
using Volo.Abp.Maui.Client;
namespace MyProject.Maui;
[DependsOn(
typeof(AbpAutofacModule),
typeof(AbpMauiClientModule),
typeof(AbpHttpClientIdentityModelModule),
typeof(MyProjectHttpApiClientModule)
)]
public class MyProjectMauiModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<AbpHttpClientBuilderOptions>(options =>
{
options.ProxyClientBuildActions.Add((_, clientBuilder) =>
{
clientBuilder.ConfigurePrimaryHttpMessageHandler(GetInsecureHandler);
});
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
MapClaimTypes();
ConfigureOidcClient(context, configuration);
ConfigureLocalization();
}
private void ConfigureOidcClient(ServiceConfigurationContext context, IConfiguration configuration)
{
Configure<OidcClientOptions>(configuration.GetSection("Oidc:Options"));
context.Services.AddTransient<OidcClient>(sp =>
{
var options = sp.GetRequiredService<IOptions<OidcClientOptions>>().Value;
options.Browser = sp.GetRequiredService<MauiAuthenticationBrowser>();
options.BackchannelHandler = GetInsecureHandler();
return new OidcClient(options);
});
}
private void ConfigureLocalization()
{
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<Simul_BCFOResource>()
.AddBaseTypes(typeof(AbpValidationResource))
.AddBaseTypes(typeof(IdentityResource))
.AddBaseTypes(typeof(AccountResource))
.AddBaseTypes(typeof(SaasResource));
});
Configure<AbpLocalizationOptions>(options =>
{
options.Languages.Add(new LanguageInfo("ar", "ar", "العربية", "ae"));
options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
options.Languages.Add(new LanguageInfo("en", "en", "English"));
options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (UK)"));
options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar"));
options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish", "fi"));
options.Languages.Add(new LanguageInfo("fr", "fr", "Français", "fr"));
options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi", "in"));
options.Languages.Add(new LanguageInfo("it", "it", "Italiano", "it"));
options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português"));
options.Languages.Add(new LanguageInfo("ru", "ru", "Русский", "ru"));
options.Languages.Add(new LanguageInfo("sk", "sk", "Slovak", "sk"));
options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文"));
options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch", "de"));
options.Languages.Add(new LanguageInfo("es", "es", "Español"));
});
}
//https://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/connect-to-local-web-services#bypass-the-certificate-security-check
private static HttpMessageHandler GetInsecureHandler()
{
#if ANDROID
var handler = new HttpClientHandler()
{
UseCookies = false
};
handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>
{
var handler = new HttpClientHandler()
{
UseCookies = false
};
handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>
{
if(cert.Issuer == "CN=localhost" || cert.Issuer == "CN=Microsoft Azure TLS Issuing CA 02, O=Microsoft Corporation, C=US")
{
return true;
}
// Or always return true for test.
return errors == System.Net.Security.SslPolicyErrors.None;
};
return handler;
#elif IOS
var handler = new NSUrlSessionHandler
{
UseCookies = false,
TrustOverrideForUrl = (sender, url, trust) => url.StartsWith("https://simul")
};
return handler;
#elif WINDOWS || MACCATALYST
return new HttpClientHandler()
{
UseCookies = false
};
#else
throw new PlatformNotSupportedException("Only Android, iOS, MacCatalyst, and Windows supported.");
#endif
}
private static void MapClaimTypes()
{
AbpClaimTypes.UserName = JwtClaimTypes.PreferredUserName;
AbpClaimTypes.Name = JwtClaimTypes.GivenName;
AbpClaimTypes.SurName = JwtClaimTypes.FamilyName;
AbpClaimTypes.UserId = JwtClaimTypes.Subject;
AbpClaimTypes.Role = JwtClaimTypes.Role;
AbpClaimTypes.Email = JwtClaimTypes.Email;
}
}
Hi,
There is no React Native Chat UI. You have to write it manually
Ok,
I will check it.