APTEM
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору В общем, проблему решил сам. Решение некрасивое, но простое. добавляем параметр в web.config Код: <appSettings> ... <!-- параметр задаёт список IP, с которых разрешён полный доступ к порталу --> <add key="AllowIP" value="127.0.0.1;192.168.0.*"/> </appSettings> | создаём класс App_Code/CheckIP/CheckIP.cs Код: using System.Configuration; using System.Text.RegularExpressions; namespace App_Code.CheckIP { /// <summary> /// Summary description for CheckIP /// </summary> public class CheckIP { public static bool Allowed(string clientIP) { string[] ips = (ConfigurationManager.AppSettings["AllowIP"] ?? "127.0.0.1").Split(',', ';'); foreach (string ip in ips) { if (ip == clientIP) { return(true); } if (ip.Contains("*")) { if (Regex.IsMatch(clientIP, "^" + ip.Replace(".", "\\.").Replace("*", ".*?") + "$")) { return true; } } } return false; } } } | правим процедуру BindRegister в /DesktopModules/Admin/Security/ManageUsers.ascx.vb Код: Private Sub BindRegister() If Not CheckIP.Allowed(Request.ServerVariables.Item("REMOTE_ADDR")) And PortalSettings.LoginTabId > 0 Then Response.Redirect(Common.Globals.NavigateURL(PortalSettings.LoginTabId), True) End If ... | к дефолтной шкурке (/Portals/_default/Skins/MinimalExtropy/index.ascx) добавляем behind-scene код (если используется таковая) Код: <%@ Control language="C#" AutoEventWireup="false" Explicit="True" CodeFile="index.ascx.cs" Inherits="DotNetNuke.UI.Skins.MinimalExtropy" %> | собственно, код (/Portals/_default/Skins/MinimalExtropy/index.ascx.cs) Код: using System; using App_Code.CheckIP; using DotNetNuke.Entities.Users; namespace DotNetNuke.UI.Skins { /// <summary> /// </summary> public partial class MinimalExtropy: Skin { protected MinimalExtropy() { Load += Page_Load; } protected void Page_Load(object sender, EventArgs e) { if (PortalSettings.LoginTabId <= 0) // если не задана страница входа - некуда выкидывать return; if (PortalSettings.ActiveTab.TabID == PortalSettings.LoginTabId) // если мы на странице входа - входим return; UserInfo userInfo = UserController.GetCurrentUserInfo(); if (userInfo!=null && userInfo.UserID > 0) return; // а иначе - проверка на допустимость IP if (!CheckIP.Allowed(Request.ServerVariables["REMOTE_ADDR"])) { Response.Redirect(Common.Globals.NavigateURL(PortalSettings.LoginTabId), true); return; } } } } | и обязательно нужно создать страницу входа, прописав параметры портала |