Hi Support Team,
We have a use case that get the email and password and Auto Resolve Tenant. We have successfully implemented via MVC UI but We need to implement it with API.
api/account/login
body
{ "userNameOrEmailAddress": "string", "password": "string", "rememberMe": true }
we want to login without Tenant ID and auto resolve their tenant.
Can you please guide me which AppService will be inherited and which Function.
Thanks
9 Answer(s)
-
0
Hi,
You can custom the Tenant resolver instead of AppService , see: https://docs.abp.io/en/abp/latest/Multi-Tenancy#custom-tenant-resolvers
-
0
I think you did not understand the requirement. We want to let users login via API call (without redirecting them to identity server). There is login api
api/account/loginPayload{ "userNameOrEmailAddress": "emailAddress", "password": "string", "rememberMe": true }User may be belong to any tenant. When login request come, we want to learn their tenant and resolve it. Here is the sample code which we added custom login page for identity server.
We want to implement same kind of logic on Login api call.
-
0
Hi,
May I ask, Which auth server are you using, openiddict or identityserver?
-
0
IdentityServer
Can you please respond quickly Thanks
-
0
Hi,
You can replace the
AbpResourceOwnerPasswordValidatorservice. https://github.com/abpframework/abp/blob/dev/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpResourceOwnerPasswordValidator.cs#L65PreConfigure<IdentityBuilder>(identityBuilder => { identityBuilder.AddResourceOwnerValidator<MyAbpResourceOwnerPasswordValidator>(); }); -
0
Hi,
there is no such
AddResourceOwnerValidatorinPreConfigure<IdentityBuilder>(identityBuilder => { identityBuilder.AddResourceOwnerValidator<MyAbpResourceOwnerPasswordValidator>(); });Secondly I configured it as and it never hits on
api/account/logincallPreConfigure<IIdentityServerBuilder>(identityServerBuilder => { identityServerBuilder.AddResourceOwnerValidator<CustomAbpResourceOwnerPasswordValidator>(); });Can you please check it one more time and guide. Secondly What if we use
OpenIddictthen How it can be managed? -
0
Hi,
Sorry, should be :
public override void PreConfigureServices(ServiceConfigurationContext context) { PreConfigure<IdentityServerBuilder>(identityBuilder => { identityBuilder.AddResourceOwnerValidator<MyAbpResourceOwnerPasswordValidator>(); }); }For
OpenIddict, you can replace the TokenController -
0
Hello @liangshiwei
Sorry, I think you could not understand the requirement.
Volo.Abp.Account.Public.Web.Areas.Account.Controllers.AccountControlleris being used forapi/account/loginYou were pushing me into another direction.
-
0
Sorry, I thought the API you were talking about was the
connect/tokenendpoint.Volo.Abp.Account.Public.Web.Areas.Account.Controllers.AccountController is being used for api/account/login
We don't have such an app service, all things are done in the login model.
There are some differences between IdentityServer and OpenIddict
IdentityServer, you can custom login page:
IdentityServerSupportedLoginModel[ExposeServices(typeof(LoginModel))] public class MyLoginModel : IdentityServerSupportedLoginModel { }Openiddict you can custom login page:
OpenIddictSupportedLoginModel[ExposeServices(typeof(LoginModel))] public class MyLoginModel : OpenIddictSupportedLoginModel { }