zoukankan      html  css  js  c++  java
  • 博客后台迁移至i.cnblogs.com及小经验分享团队

    大家好!我们已经将博客后台从原来的 www.cnblogs.com/博客地址名/admin/ 迁移至独立的二级域名 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());
        }
    }

    这样注册后,就不需要在每个Aciont上添加[Authorize]标记了。

    博客后台除了要求登录之外,还有一个需求——只有开通博客了的帐户才能访问,如何全局处理这种情况呢?

    这里再次用到了 AuthorizeAttribute,但需要实现自己的 AuthorizeAttribute,示例代码如下:

    public class BlogAuthorizeAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            var result = base.AuthorizeCore(httpContext);
            if (result)
            {
                //判断当前帐户是否开通了博客
            }
            return result;
        }
    }

    然后在 RegisterGlobalFilters() 中将 filters.Add(new AuthorizeAttribute()); 改为 filters.Add(new BlogAuthorizeAttribute());

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

    可是,这样做之后发现只对 MVC 有效,对 WebForms 无效。于是,只能针对 .aspx 专门处理一下,.aspx 页面都继承自一个基类,在基类中进行处理。

    还好,这个问题影响不大,因为在迁移过来之后,我们要做的第一项改进就是将所有的 .aspx 改为 MVC 。

  • 相关阅读:
    计算机图形学和OpenGL(二)坐标系和绘制点线函数
    计算机图形学和OpenGL(一)OpenGL初步
    C++ 实现链表常用功能
    Cocos2d-x环境搭建
    2014年学习计划
    2013年终总结
    AS3开发必须掌握的内容
    starling性能优化
    后补个2012年的总结吧
    原生javascript实现图片懒加载
  • 原文地址:https://www.cnblogs.com/cmt/p/3571649.html
Copyright © 2011-2022 走看看