Privatizzare un'installazione di BlogEngine.Net
Domanda
Ho un'installazione di blogengine.net che richiede la privatizzazione.
Al momento sto svolgendo un lavoro di ricerca, ma devo mantenere il mio blog/giornale privato finché non saranno soddisfatte determinate condizioni.
Come posso privatizzare la mia installazione di blogEngine.net in modo che i lettori debbano accedere per leggere i miei post?
Soluzione
Io uso questa estensione.Salva semplicemente il file come RequireLogin.cs nella cartella App_Code\Extensions e assicurati che l'estensione sia attivata.
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");
}
}
}
Altri suggerimenti
Da: BlogEngine.NET 2.5 - Blog privati
Se accedi al pannello di controllo, scheda Utenti, sottoscheda Ruoli (lato destro), per "Anonimo" nell'area Strumenti sul lato destro, passa il mouse sopra e seleziona "Diritti".
Ora sei nella pagina Diritti per il ruolo Anonimo.Deseleziona tutto, in particolare "Visualizza post pubblici".TUTTAVIA, è necessario mantenere almeno un elemento selezionato, altrimenti tutto torna ai valori predefiniti.Ad esempio, potresti mantenere selezionato "Visualizza valutazioni sui post".Quindi salva.
Quindi chiunque non abbia effettuato l'accesso dovrebbe essere automaticamente reindirizzato alla pagina di accesso, indipendentemente dalla pagina in cui tenta di accedere al sito.
la risposta di lomaxx non ha funzionato, quindi ho deciso di evitare che blogengine.net esegua l'autenticazione per i lettori.
su iis, ho disabilitato l'accesso anonimo e ho aggiunto un utente ospite all'elenco degli utenti win2k3.
Abbiamo creato un semplice strumento che consente a determinati utenti di accedere a determinati post in base ai rispettivi ruoli di appartenenza ASP.NET per ottenere un risultato in qualche modo simile.
http://blog.lavablast.com/post/2008/08/BlogEnginenet-Post-Security.aspx
Penserei che sia possibile farlo nel file di configurazione web facendo qualcosa di simile al seguente:
<system.web>
<authorization>
<allow roles="Admin" />
<deny users="*" />
</authorization>
</system.web>