博客后台迁移至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 。
博客后台迁移至i.cnblogs.com及小经验分享的更多相关文章
- 博客已经迁移至http://www.xuechenlei.com
博客园是个非常好的公共平台,这里总有我想找的东西,本着人生在于折腾的精神和一些个性化的定制,将博客内容迁移到www.xuechenlei.com,时而同步分享到这里,欢迎访问关注:
- 如何实现一个 markdown 图片粘贴上传的博客后台系统
如何实现一个 markdown 图片粘贴上传的博客后台系统 js 实现 drag & drop / copy & paste image uploader MongoDB 设计文档对象 ...
- 博客已经迁移至 http://barretlee.com/entry/,时而同步分享到这里
博客园是一个十分好的写作平台,不过个人比较喜欢倒腾,所以将文章都做了搬迁. 博客已经迁移至 http://barretlee.com/entry/,感谢一直以来的关注和支持. 博客订阅地址: http ...
- 所有博客已经迁移到个人空间 blog.scjia.cc
所有博客已经迁移到个人空间 blog.scjia.cc
- 云计算之路-阿里云上:14:20-14:55博客后台2台服务器都CPU 100%引发的故障
非常抱歉,今天下午14:20-14:55期间,由于同一个负载均衡中的2台服务器都出现CPU 100%问题,造成博客后台无法正常访问,由此给您带来了很大很大的麻烦,请您谅解. 博客后台是CPU消耗很低的 ...
- 《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来
上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台 ...
- 使用react全家桶制作博客后台管理系统
前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基于react全家桶(React.React-r ...
- Python开发【项目】:博客后台
概述 通过自己写的博客后台代码.思路,来与武sir的代码进行一个差异化的比较,记录之间的差距,改善以后写代码的思路 博客后台这个项目,对之前Django学习的各个知识点都有涉及到,非常重要 用户登录验 ...
- 我的博客已经迁移到csdn
博客已经迁移csdnhttp://blog.csdn.net/u013372900 博客园我很喜欢是源于他的可扩展性,可以自己去改,但遗憾的是博客园的速度似乎不是很给力.IT能有今天的 发展是源于无数 ...
随机推荐
- UltraISO制作大于4G文件的光盘映像可启动U盘
1.使用常规方法 制作 u盘启动 启动-->写入硬盘映像-->写入 2.制作成功后U盘 是FAT32格式 对于FAT32文件系统,其缺点不能存储超过4G的文件,而对于NTFS文件系统,则没 ...
- What is Requirement ?
The IEEE 610 standard defines a requirement as: (1). a condition or capability needed by a user to s ...
- 【转】LokiJS:纯JavaScript实现的轻量级数据库
原文转自:http://www.html5cn.org/article-7091-1.html LokiJS一个轻量级的面向文档的数据库,由JavaScript实现,性能高于一切.目的是把JavaSc ...
- CentOS 7 为firewalld添加开放端口及相关资料
1.运行.停止.禁用firewalld 启动:# systemctl start firewalld 查看状态:# systemctl status firewalld 或者 firewall-cm ...
- cdh5.7权限测试示例
转载请注明出处:http://www.cnblogs.com/xiaodf/ 本文旨在展示CDH基于Kerberos身份认证和基于Sentry的权限控制功能的测试示例. 1. 准备测试数据 cat / ...
- Flex Builder读书笔记(一)
Flex表现层服务器包含Flex应用框架和Flex运行服务,Flex框架包含MXML描述性语言.ActionScript程序语言和Flex类库.MXML原理定义用户界面元素,ActionScript定 ...
- Sqlserver数据库总结
由于公司项目需要这段时间一直在做有关于数据库方面的工作.趁这段时间有空,对数据库方面的知识进行一个梳理和归纳,以便以后需要时,查看起来方便. 使用的数据库主要有ORACLE10g和Sqlserver2 ...
- cocoapod的下载安装解释
本文不提供cocoapod的下载安装的流程,因为那些只要百度一下就有的东西,而是对里面的代码进行解释,希望对iOS小白安装cocoapod有帮助: 一.cocoapod是什么? 开发过程中,我们会用到 ...
- 【Gerrit】Gerrit与Jenkins/Hudson CI服务器搭建
配置Git 很多系统(例如Linux)已经默认提供了Git,在Git主页也可以找到安装程序.对于Windows用户,最好的选择是MsysGit.请注意,如果你安装了Apple Developer To ...
- 既使用maven又使用本地Jar包
maven 使用本地包 lib jar包 依赖一个lib目录 解决方法: 1. 把本地的lib加入maven编译时的依赖路径 如下配置: <plugin> <artifactId&g ...