Adding the [Authorize] attribute on the home controller eliminates the need to manually navigate to the login page. Since the Swagger UI cannot be used without logging in, you might as well add Authorize.
Ok. That works, but it is not obvious. Why not implement the Security Definition and Security Requirements for Swagger in the default template?
Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.
ABP Framework version: v4.0.0
UI type: Angular
Tiered (MVC) or Identity Server Seperated (Angular): no
Steps to reproduce the issue:
abp new Acme.BookStore -u angular -m none -csf
build the solution
run dbmigrator project
run httpapi.host project
there is no login button shown on the swagger api // attempting to use the /api/account/login post endpoint to login gives an error
Exception message and stack trace: 2020-12-10 12:05:25.045 -05:00 [DBG] Error Url: /Account/Error 2020-12-10 12:05:25.045 -05:00 [DBG] Error Id Parameter: errorId 2020-12-10 12:05:25.049 -05:00 [ERR] The required antiforgery cookie ".AspNetCore.Antiforgery.gYxNi6c7Ut0" is not present. 2020-12-10 12:05:25.050 -05:00 [INF] Authorization failed for the request at filter 'Volo.Abp.AspNetCore.Mvc.AntiForgery.AbpAutoValidateAntiforgeryTokenAuthorizationFilter'. 2020-12-10 12:05:25.054 -05:00 [INF] Executing HttpStatusCodeResult, setting HTTP status code 400
There are related tickets/pull requests which were closed indicating this is in v4.0, but testing indicates otherwise
Here is the list of packages from my Application project. Keep in mind, we are not using MongoDb.
<ItemGroup>
<PackageReference Include="Volo.Abp.Account.Pro.Shared.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.PermissionManagement.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.FeatureManagement.Application" Version="3.3.1" />
<PackageReference Include="Volo.Saas.Host.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.AuditLogging.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.Identity.Pro.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.IdentityServer.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.Account.Pro.Public.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.Account.Pro.Admin.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.LanguageManagement.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.TextTemplateManagement.Application" Version="3.3.1" />
<PackageReference Include="Volo.Abp.LeptonTheme.Management.Application" Version="3.3.1" />
</ItemGroup>
I commented out all tests and then started adding tests 1 at a time. The process works for 2 tests (any two), but the process starts showing errors when adding a 3rd test (any item). With 3 tests, it works sometimes and fails others. Very inconsistent, but it fails more than it succeeds. Adding a 4th test caused it to fail every time.
An example test case is shown below
public class ClassificationSubcategoryAppServiceTests : SynergyzApplicationTestBase
{
private readonly IClassificationSubcategoryAppService _classificationSubcategoryAppService;
private readonly IRepository<ClassificationSubcategory, int> _classificationSubcategoryRepository;
public ClassificationSubcategoryAppServiceTests()
{
_classificationSubcategoryAppService = GetRequiredService<IClassificationSubcategoryAppService>();
_classificationSubcategoryRepository = GetRequiredService<IRepository<ClassificationSubcategory, int>>();
}
[Fact]
public async Task GetListAsync()
{
// Act
var result = await _classificationSubcategoryAppService.GetListAsync(new GetClassificationSubcategoriesInput());
// Assert
result.TotalCount.ShouldBe(2);
result.Items.Count.ShouldBe(2);
result.Items.Any(x => x.Id == 2069964284).ShouldBe(true);
result.Items.Any(x => x.Id == 268848218).ShouldBe(true);
}
[Fact]
public async Task GetAsync()
{
// Act
var result = await _classificationSubcategoryAppService.GetAsync(2069964284);
// Assert
result.ShouldNotBeNull();
result.Id.ShouldBe(2069964284);
}
[Fact]
public async Task CreateAsync()
{
// Arrange
var input = new ClassificationSubcategoryCreateDto
{
Name = "b8aa10058749413fae20f5b21834f142e59c87e73ce8405d84ba798226f9eaed1a01fc330d1a4d91be561a465f9a47416045dfe08b7244ecbab46087feebdee2b5736e43a58846d78e1562a9ea5184caa69534d8d5174b0cb9ec4aede460d6f02d7f18040bd14bf8b69c8d2a6c8a68d575b65716869c4a0aa7e3a1683595dbd",
Definition = "989",
CedsFlag = true
};
// Act
var serviceResult = await _classificationSubcategoryAppService.CreateAsync(input);
// Assert
var result = await _classificationSubcategoryRepository.FindAsync(c => c.Id == serviceResult.Id);
result.ShouldNotBe(null);
result.Name.ShouldBe("b8aa10058749413fae20f5b21834f142e59c87e73ce8405d84ba798226f9eaed1a01fc330d1a4d91be561a465f9a47416045dfe08b7244ecbab46087feebdee2b5736e43a58846d78e1562a9ea5184caa69534d8d5174b0cb9ec4aede460d6f02d7f18040bd14bf8b69c8d2a6c8a68d575b65716869c4a0aa7e3a1683595dbd");
result.Definition.ShouldBe("989");
result.CedsFlag.ShouldBe(true);
}
[Fact]
public async Task UpdateAsync()
{
// Arrange
var input = new ClassificationSubcategoryUpdateDto()
{
Name = "9eb166489eb44c869edebebd65472cabd7abbdb868f44c22b6e2f236b6297a49366cab5647944c9a93bb7c892580f81310d6952b0a0d4b99a085f3e528eda76974d6586f55724aa6ac7545b0629885be4c5aeac1d89d46d190ae3e5ebf40d5b5ce5316e81da3466c931807bac703a899c9021cc6e867497191522bd8e0355d1",
Definition = "58f",
CedsFlag = true
};
// Act
var serviceResult = await _classificationSubcategoryAppService.UpdateAsync(2069964284, input);
// Assert
var result = await _classificationSubcategoryRepository.FindAsync(c => c.Id == serviceResult.Id);
result.ShouldNotBe(null);
result.Name.ShouldBe("9eb166489eb44c869edebebd65472cabd7abbdb868f44c22b6e2f236b6297a49366cab5647944c9a93bb7c892580f81310d6952b0a0d4b99a085f3e528eda76974d6586f55724aa6ac7545b0629885be4c5aeac1d89d46d190ae3e5ebf40d5b5ce5316e81da3466c931807bac703a899c9021cc6e867497191522bd8e0355d1");
result.Definition.ShouldBe("58f");
result.CedsFlag.ShouldBe(true);
}
[Fact]
public async Task DeleteAsync()
{
// Act
await _classificationSubcategoryAppService.DeleteAsync(2069964284);
// Assert
var result = await _classificationSubcategoryRepository.FindAsync(c => c.Id == 2069964284);
result.ShouldBeNull();
}
}
The project was created using ABP Suite version 3.1 and then upgraded to 3.3.1. Creating a sample project using the 3.3 framework does not seem to reproduce the problem.
I can run all tests for a single application service and the tests work correctly. However, if I try running all application service tests, every single test fails with the error message below. This is preventing us from using the tests in our CI pipeline. The domain and repository tests are not having this issue. I can run all of them concurrently without an issue.
Message:
Volo.Abp.AbpInitializationException : An error occurred during PostConfigureServices phase of the module Volo.Saas.Host.SaasHostApplicationContractsModule, Volo.Saas.Host.Application.Contracts, Version=3.3.1.0, Culture=neutral, PublicKeyToken=null. See the inner exception for details.
---- System.InvalidOperationException : Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
Stack Trace:
AbpApplicationBase.ConfigureServices()
AbpApplicationBase.ctor(Type startupModuleType, IServiceCollection services, Action1 optionsAction) AbpApplicationWithExternalServiceProvider.ctor(Type startupModuleType, IServiceCollection services, Action
1 optionsAction)
AbpApplicationFactory.Create(Type startupModuleType, IServiceCollection services, Action1 optionsAction) AbpApplicationFactory.Create[TStartupModule](IServiceCollection services, Action
1 optionsAction)
ServiceCollectionApplicationExtensions.AddApplication[TStartupModule](IServiceCollection services, Action1 optionsAction) AbpIntegratedTest
1.ctor()
SynergyzTestBase1.ctor() SynergyzApplicationTestBase.ctor() CompiledDictionaryAppServiceTests.ctor() line 15 ----- Inner Stack Trace ----- Dictionary
2.FindEntry(TKey key)
Dictionary2.TryGetValue(TKey key, TValue& value) AbpDictionaryExtensions.GetOrAdd[TKey,TValue](IDictionary
2 dictionary, TKey key, Func2 factory) AbpDictionaryExtensions.GetOrAdd[TKey,TValue](IDictionary
2 dictionary, TKey key, Func1 factory) ObjectExtensionInfo.AddOrUpdateProperty(Type propertyType, String propertyName, Action
1 configureAction)
<>c__DisplayClass3_0.<AddOrUpdateProperty>b__0(ObjectExtensionInfo options)
ObjectExtensionManager.AddOrUpdate(Type type, Action1 configureAction) ObjectExtensionManagerExtensions.AddOrUpdateProperty(ObjectExtensionManager objectExtensionManager, Type objectType, Type propertyType, String propertyName, Action
1 configureAction)
ObjectExtensionManagerExtensions.AddOrUpdateProperty(ObjectExtensionManager objectExtensionManager, Type[] objectTypes, Type propertyType, String propertyName, Action`1 configureAction)
ModuleExtensionConfigurationHelper.ApplyPropertyConfigurationToTypes(ExtensionPropertyConfiguration propertyConfig, Type[] types)
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi(String moduleName, String objectName, Type[] getApiTypes, Type[] createApiTypes, Type[] updateApiTypes)
SaasHostApplicationContractsModule.PostConfigureServices(ServiceConfigurationContext context)
AbpApplicationBase.ConfigureServices()
I have not seen an answer about account linking. Is the Account linking UI available in the Angular solution? If not, when is it projected to be delivered?
After upgrading to 3.3, the account linking is not showing up. Neither do I see the option if I create a new angular based solution with 3.3. The API endpoints exist, but no UI. This leads me to think the UI is not available yet for Angular, or there is a missing setup step needed.
After upgrading to 3.3, I was expecting to see the Linked User account managment option. However, I do not see any linked user components in the UI. We are not using social logins, just in case that is a related issue.
Account Management screen https://www.screencast.com/t/HSnTFbmENbAV
User Profile screen https://www.screencast.com/t/3Zi2parvX
Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.
I can see from the documentation and various support tickets that I can implement custom styles. However, I want to change the color scheme of the Lepton theme Style 1. The css file appears to be an embedded resource in the Lepton theme dll. Is it possible to provide a custom version of this css file (like you can do with Razor pages)? If so, what is the path needed in the host project to provide a customized version of this file?