Orchard 1.8 - Как инициировать действие при входе пользователя в систему

Я создал пользовательскую часть, которую прикрепил к пользовательской части (она нужна мне для хранения дополнительных данных, связанных с пользователем). Мне нужно выполнить некоторый код, когда пользователь регистрирует учетную запись или каждый раз, когда он аутентифицирует себя, используя эту учетную запись. Я помещаю код для выполнения во время регистрации в обработчик моей пользовательской части внутри метода OnCreated, но я не могу найти, как определить операцию входа в систему. Есть ли метод обработчика, в который я могу поместить этот код, который мне нужно выполнять при каждом входе в систему?


person Soel    schedule 13.02.2015    source источник


Ответы (1)


Этот код будет не в части, а в событии IUserEventHandler LoggedIn.

Таким образом, пример реализации будет таким:

public class ModUserEvents : IUserEventHandler {
    public ModUserEvents() {
    }

    public void LoggedIn(IUser user) {
        // go go do your stuff
    }


    #region unused events
    public void Approved(IUser user){
    }

    public void Created(UserContext context){
    }

    public void Creating(UserContext context) {
    }

    public void LoggedOut(IUser user) {
    }

    public void AccessDenied(IUser user) {
    }

    public void ChangedPassword(IUser user) {
    }

    public void SentChallengeEmail(IUser user) {
    }

    public void ConfirmedEmail(IUser user) {
    }
    #endregion
}

Вам нужно будет сослаться на Orchard.Users и добавить @using Orchard.Users.Events

person Hazza    schedule 13.02.2015
comment
Это работает, если я вхожу в пользовательский интерфейс Orchard, но я также использую открытую процедуру аутентификации, которая явно вызывает метод SignIn Orchard.Security.IAuthenticationService. С этой процедурой у меня проблема, потому что пользователь правильно зарегистрирован, но событие LoggedIn не запускается. Это та же процедура, что и в модуле OpenAuthentication, который я нашел в галерее Orchard. - person Soel; 18.02.2015
comment
Вызывать метод явно самостоятельно? - person Hazza; 18.02.2015
comment
Да, проблема в том, что модуль Open Authentication не вызывает событие LoggedIn после корректного выполнения SignIn. Если добавить эту инструкцию все работает. - person Soel; 19.02.2015