ブログのバックグラウンドをi.cnblogsに移行comと小さな経験を共有

4290 ワード

皆さん、こんにちは!ブログのバックグラウンドを元のwww.cnblogsからcom/ブログアドレス名/admin/独立した2級ドメイン名i.cnblogsに移行com.何か問題が見つかったら、すぐにフィードバックしてください.
今回の移行はウェブサイトの切り替えにすぎないように見えますが、私たちにとって重要な一歩です.ブログのバックグラウンドのコードをブログのメインステーションから剥離し、ブログのバックグラウンドの後続の大幅な改善に備えています.
i.cnblogs.comはASP.NET MVCとWebFormsの混合環境では、ブログのバックグラウンドのコードをwww.cnblogs.com引っ越してi.cnblogs.comの過程で、私たちはいくつかの問題に直面して、この博文の中で分かち合います.
ブログのバックグラウンドにはログインしてからアクセスしなければならないので、webにいます.configには、次の設定が追加されています.
<authorization>
  <deny users="?" />
</authorization>

しかし、追加後、MVCにはまったく役に立たないことが分かった.私たちが使っているASP.NET MVCのバージョンは5.1で、MVC導入後、この設定は廃棄されたようです.
その後blogsでmsdn.comのブログ(Securing your ASP.NET MVC 4 App and the new AllowAnonymous Attribute)で解決策が見つかりました.RegisterGlobalFilters()にAuthorizeAttributeを登録します.コードは次のとおりです.
protected void Application_Start()
{
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
}

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new AuthorizeAttribute());
    }
}

これにより登録後、各Actiontに[Authorize]タグを追加する必要がなくなります.
ブログのバックグラウンドにはログインのほかに、ブログを開設したアカウントだけがアクセスできるというニーズがあります.このような状況をグローバルに処理するにはどうすればいいのでしょうか.
ここではAuthorizeAttributeを再度使用しますが、独自のAuthorizeAttributeを実装する必要があります.サンプルコードは次のとおりです.
public class BlogAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var result = base.AuthorizeCore(httpContext);
        if (result)
        {
            //             
        }
        return result;
    }
}

そして、レジスターGlobalFilters()でfilters.Add(new AuthorizeAttribute()); ファイルに変更Add(new BlogAuthorizeAttribute());
public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new BlogAuthorizeAttribute());
    }
}

しかし、このようにしてMVCにのみ有効であり、WebFormsには無効であることが判明した.すると、対象になるしかない.aspxは専門的に処理します.aspxページはいずれも1つのベースクラスから継承され,ベースクラスで処理される.
幸いなことに、この問題はあまり影響しません.移転後、私たちがしなければならない最初の改善はすべてを改善することです.aspxをMVCに変更しました.