GetLoginResultAsync отправляет неверное сообщение клиенту

кажется, что AccountController (стандартная версия шаблона ABP 2.3) отправляет неправильное сообщение клиентскому браузеру, например, когда:

  1. Неверные учетные данные типа пользователя;
  2. Имя пользователя не существует;
  3. Пользовательский рынок как «неактивный»;

    switch (loginResult.Result)
    {
        case AbpLoginResultType.Success:
            return loginResult;
        default:
            throw CreateExceptionForFailedLoginAttempt(loginResult.Result, usernameOrEmailAddress, tenancyName);
    }
    

Например, CreateExceptionForFailedLoginAttempt возвращает исключение UserFriendlyException, когда AbpLoginResultType.UserIsNotActive имеет значение true (пользователь неактивен), но клиент получает общее сообщение «Произошла ошибка! - Сведения об ошибке не отправлены сервером "сообщение вместо" дружеское сообщение "

private Exception CreateExceptionForFailedLoginAttempt(AbpLoginResultType result, string usernameOrEmailAddress, string tenancyName)
{
    switch (result)
    {
        case AbpLoginResultType.Success:
            return new ApplicationException("Don't call this method with a success result!");

        case AbpLoginResultType.InvalidUserNameOrEmailAddress:

            // Wrong Username/password
            return new UserFriendlyException(L("LoginFailed"), L("UnknownUser"));                                                    

        case AbpLoginResultType.InvalidPassword:
            return new UserFriendlyException(L("LoginFailed"), L("InvalidUserNameOrPassword"));
        case AbpLoginResultType.InvalidTenancyName:
            return new UserFriendlyException(L("LoginFailed"), L("ThereIsNoTenantDefinedWithName{0}", tenancyName));
        case AbpLoginResultType.TenantIsNotActive:
            return new UserFriendlyException(L("LoginFailed"), L("TenantIsNotActive", tenancyName));
        case AbpLoginResultType.UserIsNotActive:
            return new UserFriendlyException(L("LoginFailed"), L("UserIsNotActiveAndCanNotLogin", usernameOrEmailAddress));
        case AbpLoginResultType.UserEmailIsNotConfirmed:
            return new UserFriendlyException(L("LoginFailed"), "UserEmailIsNotConfirmedAndCanNotLogin");
        case AbpLoginResultType.LockedOut:
            return new UserFriendlyException(L("LoginFailed"), L("UserLockedOutMessage"));
        default: //Can not fall to default actually. But other result types can be added in the future and we may forget to handle it
            Logger.Warn("Unhandled login fail reason: " + result);
            return new UserFriendlyException(L("LoginFailed"));
    }
}

я посмотрел файл Log.txt и нашел

WARN 2017-09-27 10: 51: 55,219 [8] MPA_EF.Web.Controllers.AccountController - Ошибка входа! Abp.UI.UserFriendlyException: Ошибка входа! в BBWP_ABP_MPA_EF.Web.Controllers.AccountController.d__13.MoveNext () в C: _Ambienti \ vs2015 \ Biosic \ module-zero-template-2.1.1 \ src \ BBWP_ABP_MPA_EF.Web \ Controllers \ AccountController.cs: строка 130 --- Конец трассировки стека из предыдущего места, где было создано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача Task) в System.Runtime.TwaiterAervices_1. .CallEndDelegate (IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.End() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.CallEndDelegate (IAsyncResult asyncResult) в System.WrappedAsyncResult.AsyncResult (IAsyncResult asyncResult) в System.Web.Async. .AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters (IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncControllerActionInvoker. ‹> C__DisplayClass21.‹> C__Disc.Asbc.Async. ctionInvoker. ‹> c__DisplayClass21.b__1e (IAsyncResult asyncResult)

Изменить без настройки в способе входа

person Saro    schedule 27.09.2017    source источник
comment
Привет, Аарон, нет, это метод GetLoginResultAsync внутри AccountController   -  person Saro    schedule 27.09.2017
comment
Метод входа в систему внутри вызова контроллера GetLoginResultAsync В любом случае клиенты отключены для этого приложения.   -  person Saro    schedule 27.09.2017
comment
Нет все стандартно   -  person Saro    schedule 27.09.2017
comment
Да, pastebin.com/B5WB181u   -  person Saro    schedule 27.09.2017
comment
попробуйте решение @Richard Brink, оно должно решить вашу проблему   -  person Alper Ebicoglu    schedule 28.09.2017
comment
Как мне сделать то же самое в .Net Core 2.2 ABP?   -  person Gopi    schedule 05.12.2019


Ответы (1)


Глядя на предоставленный журнал, я не вижу проблем с обработкой вашего кода. Единственное, о чем я могу думать, - это проблема конфигурации в вашем web.config.

Убедитесь, что для тега <customErrors /> установлено значение <customErrors mode="RemoteOnly" /> или <customErrors mode="On" />.

person Richard Brink    schedule 27.09.2017
comment
да По какой-то странной причине я изменил значение в файле web.config, теперь работает правильно. Было бы интересно понять цикл кода, который привел к отображению общего сообщения. - person Saro; 28.09.2017
comment
Как мне сделать то же самое в .Net Core 2.2 ABP? - person Gopi; 05.12.2019
comment
Ядро .net также имеет файл webconfig, если нет, вы можете вручную добавить его - person RAHUL S R; 16.01.2020