解決策を試すためにこれを改めて言いました。BlogEngine.NET 3.3 - 匿名ユーザーが特定のことをしないようにする
私はBlogEngine.NET 3.3を使用しています。私はブログの投稿の300文字を表示する要件があり、その後、登録ユーザーは、残りの部分を読むために投稿名をクリックします。
私は、300文字を見ることができるようにユーザ(匿名ユーザ)を登録したいと思いますが、投稿の完全な内容を読むと、「このコンテンツを見るために登録してください」というテキストが表示されます。
これまで誰かがこれを達成しているかどうかを調べるためにネットを精査しました。私は以下のコードを見つけました。これを有効にするには、.csとしてApp_Code/Extensionsフォルダに入れます。ただし、3.3では、App_Codeに拡張フォルダはありません。 BlogEngine.Core \ Web \ Extensionsはここにあります。私は以下のコードをweb \ 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 PostSecurity
{
static protected ExtensionSettings settings = null;
public PostSecurity()
{
Post.Serving += new EventHandler<ServingEventArgs>(Post_Serving);
ExtensionSettings s = new ExtensionSettings("PostSecurity");
s.AddParameter("Role", "Role", 50, true);
s.AddParameter("Category", "Category", 50);
// 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. ";
s.AddValues(new string[] { "Registered", "" });
ExtensionManager.ImportSettings(s);
settings = ExtensionManager.GetSettings("PostSecurity");
}
protected void Post_Serving(object sender, ServingEventArgs e)
{
Post post = (Post)sender;
bool continu = false;
MembershipUser user = Membership.GetUser();
continu = user != null;
if (user != null)
{
List<string> categories = new List<string>();
foreach (Category cat in post.Categories)
categories.Add(cat.Title);
string[] r = Roles.GetRolesForUser();
List<string> roles = new List<string>(r);
DataTable table = settings.GetDataTable();
foreach (DataRow row in table.Rows)
{
if (string.IsNullOrEmpty((string)row["Category"]))
continu &= roles.Contains((string)row["Role"]);
else
{
if (categories.Contains((string)row["Category"]))
continu &= roles.Contains((string)row["Role"]);
}
}
}
e.Cancel = !continu;
}
}
はい、そうです。私はそれを私の友人の要求に働かせる方法を試していました。私は、投稿の閲覧時に許可チェックがどこで行われているかを見つけるのに苦労しています。ご意見をいただきありがとうございます。 – Matt
投稿が表示される権限は管理者ページを使って設定されているため、デフォルトでチェックはありませんが、そのビューに追加のロジックを追加してこれを達成できるはずです。 あなたはそれがうまくいくことを願っています! :) – MunchyYDL