Приватизация блог-системы.Сетевая установка
Вопрос
У меня есть blogengine.сетевая установка, которая требует приватизации.
В данный момент я занимаюсь исследовательской работой, но я должен держать свой блог в секрете до тех пор, пока не будут выполнены определенные условия.
Как я могу приватизировать свой BlogEngine.сетевая установка, чтобы читатели должны были входить в систему, чтобы читать мои сообщения?
Решение
Я использую это расширение.Просто сохраните файл как RequireLogin.cs в папке App_Code \ Extensions и убедитесь, что расширение активировано.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using BlogEngine.Core;
using BlogEngine.Core.Web.Controls;
using System.Collections.Generic;
/// <summary>
/// Summary description for PostSecurity
/// </summary>
[Extension("Checks to see if a user can see this blog post.",
"1.0", "<a href=\"http://www.lavablast.com\">LavaBlast.com</a>")]
public class RequireLogin
{
static protected ExtensionSettings settings = null;
public RequireLogin()
{
Post.Serving += new EventHandler<ServingEventArgs>(Post_Serving);
ExtensionSettings s = new ExtensionSettings("RequireLogin");
// describe specific rules for entering parameters
s.Help = "Checks to see if the user has any of those roles before displaying the post. ";
s.Help += "You can associate a role with a specific category. ";
s.Help += "All posts having this category will require that the user have the role. ";
s.Help += "A parameter with only a role without a category will enable to filter all posts to this role. ";
ExtensionManager.ImportSettings(s);
settings = ExtensionManager.GetSettings("PostSecurity");
}
protected void Post_Serving(object sender, ServingEventArgs e)
{
MembershipUser user = Membership.GetUser();
if(HttpContext.Current.Request.RawUrl.Contains("syndication.axd"))
{
return;
}
if (user == null)
{
HttpContext.Current.Response.Redirect("~/Login.aspx");
}
}
}
Другие советы
От: BlogEngine.NET 2.5 - Частные блоги
Если вы зайдете в панель управления, вкладку "Пользователи", вложенную вкладку "Роли" (справа), для "Анонимных" в области инструментов справа наведите курсор на это и выберите "Права".
Теперь вы находитесь на странице Прав для анонимной роли.Снимите галочки со всего, в частности с пункта "Просматривать общедоступные сообщения".ОДНАКО вам необходимо сохранить хотя бы один элемент отмеченным, в противном случае все возвращается к значению по умолчанию.Например, вы могли бы установить флажок "Просматривать оценки постов".Затем Сохраните.
Затем любой, кто не вошел в систему, должен быть автоматически перенаправлен на страницу входа в систему, независимо от того, на какой странице он пытается зайти на сайт.
ответ lomaxx не сработал, поэтому я решил не заставлять blogengine.net выполнять аутентификацию для читателей.
в iis я отключил анонимный доступ и добавил гостевых пользователей в список пользователей win2k3.
Мы создали простой инструмент, который дает определенные пользователям доступ к некоторым должностям в соответствии с их ролями членство ASP.NET чтобы достичь аналогичного результата.
http://blog .lavablast.com/post/2008/08/BlogEnginenet-Post-Security.aspx
Я бы подумал, что это можно сделать в файле web config, выполнив что-то вроде следующего:
<system.web>
<authorization>
<allow roles="Admin" />
<deny users="*" />
</authorization>
</system.web>