0

我正在尝试通过实现 IUserEventHandlers 来连接 DNN 用户身份验证事件。DNN 不会触发该事件。

public interfaceIUserEventHandlers

{

   void UserAuthenticated(object sender, UserEventArgs args);

   void UserCreated(object sender, UserEventArgs args);

   void UserDeleted(object sender, UserEventArgs args);

   void UserRemoved(object sender, UserEventArgs args);

   void UserApproved(object sender, UserEventArgs args);

}

如何挂钩 DNN 登录身份验证事件?

4

1 回答 1

1

这应该做。删除不必要的“使用”

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Services.Mail;
using DotNetNuke.Services.Social.Notifications;
using System.ComponentModel.Composition;
using DotNetNuke.Entities.Modules.Actions;
using DotNetNuke.Entities.Profile;
using DotNetNuke.Entities.Tabs.Actions;
using DotNetNuke.Security.Roles;
using DotNetNuke.Services.FileSystem.EventArgs;
using DotNetNuke.Services.Log.EventLog;
using System.Net;

// For this I added a reference to the System.ComponentModel.Composition.dll
namespace TestProject.DotNetNuke.Entities.Users
{
    [Export(typeof(IUserEventHandlers))]
    public class UserEventHandlers : IUserEventHandlers
    {
        private void IUserEventHandlers_UserCreated(object sender, UserEventArgs args)
        {
            var x = "d";
        }

        private void IUserEventHandlers_UserDeleted(object sender, UserEventArgs args)
        {
            var x = "d";
        }
        public void IUserEventHandlers_UserAuthenticated(object sender, UserEventArgs args)
        {
            var x = "d";
        }

        public void IUserEventHandlers_UserUpdated(object sender, UpdateUserEventArgs args)
        {
            var x = "d";
        }

        private void IUserEventHandlers_UserRemoved(object sender, UserEventArgs args)
        {
            var x = "d";
        }

        private void IUserEventHandlers_UserApproved(object sender, UserEventArgs args)
        {
            System.Net.Mail.SendMail(args.User, MessageType.UserRegistrationPublic, PortalSettings.Current);
            DeleteAllNotifications(args.User.UserID);
        }

        private void DeleteAllNotifications(int userId)
        {
            var nt = NotificationsController.Instance.GetNotificationType("NewUnauthorizedUserRegistration");
            var notifications = NotificationsController.Instance.GetNotificationByContext(nt.NotificationTypeId, userId.ToString(CultureInfo.InvariantCulture));

            foreach (var notification in notifications)
                NotificationsController.Instance.DeleteNotification(notification.NotificationID);
        }
    }
}
于 2019-07-09T20:22:49.440 回答