Register  |  
About the author
Baldwin's Status
 Contact Me
Baldwin Sun
Senior Developer for dnn solution & founder of SunBlog module...
Blog搜索
相册库
更多照片请查看相册库
最新评论
Rss Feed
feedsky
抓虾
pageflakes
newsgator
哪吒
我们的服务
  • DotNetNuke 咨询
  • Web设计及其模块开发
  • 免费建站
  • 电子商务
  • 开拓市场
我们致力于开发定制的web 2.0 ,所服务的客户主要包括小中型企业,社区俱乐部及其非盈利机构组织。我们将利用开源的DNN作为我们核心的系统机制,更多相关信息...

"暴力"解决DNN无法登陆的问题

Posted in [DNN使用及思考], [杂项] By baldwin

大家也许看了我之前的一篇文章讲述如何定制DNN登陆页面的文章: 如何定制登陆页面,  然后尝试新建一个页面测试一下, 最后也许误删了该页面的Account Login模块(登陆模块)而导致了你的站点无法登陆, 这时我们怎么回滚这些设置呢? 遗憾的是, DNN并没有对此类问题提供什么好的操作界面或解决方案, 最后还得我们这些DNN Fans(Developer)来挖掘问题的出路和解决方案. 我想大家第一想到方案应该就是直接暴力修改数据库了, 对, 我想在此能分享的也就是暴力解决方案, 其中的原理很简单, 因为DNN默认登陆Url一般可通过这样得到http://yourwebsite/default.aspx?ctl=login (也是原始url, 没有任何Url Rewrite, 如果你深入研究会发现这一页面或是首页或是当前页面), 如果你按照我前边文章定制了登陆页面的话, 那无非就是Portal 的属性LoginTabId 修改为新的页面的TabID( 比如 100, 231), 这时当你点击登陆链接时DNN将根据站点设置跳转到对应的页面, 仔细研读下列代码可知其中奥秘:
 
  1. If PortalSettings.LoginTabId <> -1 And Request.QueryString("override"Is Nothing Then  
  2.         ' user defined tab   
  3.         Response.Redirect(NavigateURL(PortalSettings.LoginTabId, """returnurl=" & ReturnUrl), True)   
  4. Else  
  5.         ' portal tab   
  6.         If PortalSettings.HomeTabId <> -1 Then  
  7.             Response.Redirect(NavigateURL(PortalSettings.HomeTabId, "Login""returnurl=" & ReturnUrl), True)   
  8.         Else  
  9.             Response.Redirect(NavigateURL(PortalSettings.ActiveTab.TabID, "Login""returnurl=" & ReturnUrl), True)   
  10.         End If  
  11.     End If  
  12. End If  
好, 现在你应该也知道如何解决了吧, 有两种方式(都不是独创的, 直接Copy过来, 本着分享的原则, 详细请看相关链接):
1) 如果你有数据库权限, 那就执行这一SQL语句:
 
  1. Update Portals Set LoginTabId=NULL Where PortalId=xx /* xx代表你站点对应的PortalID, 一般是0 */  
最后记得清一下缓存(重启IIS或"修改"Web.config或其他类似方式)
2) 下载这一压缩包(OpenSesame.zip), 解压到站点根目录下, 然后通过Url访问这一文件( http://yourwebsite/OpenSesame.aspx )将自动更新Portal的LoginTabID为null, 从而达到回滚原始设置的目的, 最后记得把这一文件删除了 :) 
Popular tags: CMS, SNS
Previous Entry: 本站最新文章索引
Next Entry: Color Picker v1.1 Beta发布

Comments

Was it good for you, too?Join the discussion » ,but you need to login first before you make comments.