﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Baldwin's DNN</title>
    <description>在此研究DNN的所有相关课题，希望给DNN在中国的广为人知贡献一点绵薄之力....</description>
    <link>http://www.dnnsun.com/Community/BaldwinsBlog/tabid/67/blogid/1/Default.aspx</link>
    <language>zh-CN</language>
    <managingEditor>dnnsun@gmail.com</managingEditor>
    <webMaster>dnnsun@gmail.com</webMaster>
    <pubDate>Wed, 07 Jan 2009 11:32:40 GMT</pubDate>
    <lastBuildDate>Wed, 07 Jan 2009 11:32:40 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>SunBlog RSS Generator Version 2.1.0.0</generator>
    <item>
      <title>"暴力"解决DNN无法登陆的问题</title>
      <description>&lt;DIV&gt;大家也许看了我之前的一篇文章讲述如何定制DNN登陆页面的文章: &lt;A href="http://www.dnnsun.com/Community/BaldwinsBlog/tabid/67/EntryID/2/Default.aspx" target=_blank&gt;如何定制登陆页面&lt;/A&gt;,  然后尝试新建一个页面测试一下, 最后也许误删了该页面的Account Login模块(登陆模块)而导致了你的站点无法登陆, 这时我们怎么回滚这些设置呢? 遗憾的是, DNN并没有对此类问题提供什么好的操作界面或解决方案, 最后还得我们这些DNN Fans(Developer)来挖掘问题的出路和解决方案. 我想大家第一想到方案应该就是直接暴力修改数据库了, 对, 我想在此能分享的也就是暴力解决方案, 其中的原理很简单, 因为DNN默认登陆Url一般可通过这样得到&lt;A href="http://yourwebsite/default.aspx?ctl=login"&gt;http://yourwebsite/default.aspx?ctl=login&lt;/A&gt; (也是原始url, 没有任何Url Rewrite, 如果你深入研究会发现这一页面或是首页或是当前页面), 如果你按照我前边文章定制了登陆页面的话, 那无非就是Portal 的属性LoginTabId 修改为新的页面的TabID( 比如 100, 231), 这时当你点击登陆链接时DNN将根据站点设置跳转到对应的页面, 仔细研读下列代码可知其中奥秘:&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV class=dp-highlighter id=vb&gt;
&lt;DIV class=bar&gt; &lt;/DIV&gt;
&lt;OL class=dp-vb&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=keyword&gt;If&lt;/SPAN&gt;&lt;SPAN&gt; PortalSettings.LoginTabId &lt;&gt; -1 &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;And&lt;/SPAN&gt;&lt;SPAN&gt; Request.QueryString(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"override"&lt;/SPAN&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;Is&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;Nothing&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;Then&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;/SPAN&gt;&lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;        &lt;/SPAN&gt;&lt;SPAN class=comment&gt;' user defined tab &lt;/SPAN&gt;&lt;SPAN&gt;  &lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;        Response.Redirect(NavigateURL(PortalSettings.LoginTabId, &lt;/SPAN&gt;&lt;SPAN class=string&gt;""&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN class=string&gt;"returnurl="&lt;/SPAN&gt;&lt;SPAN&gt; &amp; ReturnUrl), &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;True&lt;/SPAN&gt;&lt;SPAN&gt;)   &lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN class=keyword&gt;Else&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;        &lt;/SPAN&gt;&lt;SPAN class=comment&gt;' portal tab &lt;/SPAN&gt;&lt;SPAN&gt;  &lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;        &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;If&lt;/SPAN&gt;&lt;SPAN&gt; PortalSettings.HomeTabId &lt;&gt; -1 &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;Then&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;            Response.Redirect(NavigateURL(PortalSettings.HomeTabId, &lt;/SPAN&gt;&lt;SPAN class=string&gt;"Login"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN class=string&gt;"returnurl="&lt;/SPAN&gt;&lt;SPAN&gt; &amp; ReturnUrl), &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;True&lt;/SPAN&gt;&lt;SPAN&gt;)   &lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;        &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;Else&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;            Response.Redirect(NavigateURL(PortalSettings.ActiveTab.TabID, &lt;/SPAN&gt;&lt;SPAN class=string&gt;"Login"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN class=string&gt;"returnurl="&lt;/SPAN&gt;&lt;SPAN&gt; &amp; ReturnUrl), &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;True&lt;/SPAN&gt;&lt;SPAN&gt;)   &lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN&gt;        &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;End&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;If&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;/SPAN&gt; 
&lt;LI class=alt&gt;&lt;SPAN&gt;    &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;End&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;If&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;/SPAN&gt; 
&lt;LI class=""&gt;&lt;SPAN class=keyword&gt;End&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;If&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;/SPAN&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;LINK href="/Providers/HtmlEditorProviders/Fck/FCKeditor/editor/plugins/highlighter/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css" type=text/css rel=stylesheet&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;好, 现在你应该也知道如何解决了吧, 有两种方式(都不是独创的, 直接Copy过来, 本着分享的原则, 详细请看相关链接):&lt;/DIV&gt;
&lt;DIV&gt;1) 如果你有数据库权限, 那就执行这一SQL语句:&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV class=dp-highlighter id=sql&gt;
&lt;DIV class=bar&gt; &lt;/DIV&gt;
&lt;OL class=dp-sql&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=keyword&gt;Update&lt;/SPAN&gt;&lt;SPAN&gt; Portals &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;Set&lt;/SPAN&gt;&lt;SPAN&gt; LoginTabId=&lt;/SPAN&gt;&lt;SPAN class=op&gt;NULL&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;Where&lt;/SPAN&gt;&lt;SPAN&gt; PortalId=xx /* xx代表你站点对应的PortalID, 一般是0 */  &lt;/SPAN&gt;&lt;/SPAN&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;最后记得清一下缓存(重启IIS或"修改"Web.config或其他类似方式)&lt;/DIV&gt;
&lt;DIV&gt;2) 下载这一压缩包(&lt;A href="http://www.dnnsun.com/Portals/0/Download/OpenSesame.zip" target=_blank&gt;OpenSesame.zip&lt;/A&gt;), 解压到站点根目录下, 然后通过Url访问这一文件( &lt;A href="http://yourwebsite/OpenSesame.aspx"&gt;http://yourwebsite/OpenSesame.aspx&lt;/A&gt; )将自动更新Portal的LoginTabID为null, 从而达到回滚原始设置的目的, 最后记得把这一文件删除了 :) &lt;/DIV&gt;
&lt;DIV&gt;相关链接:&lt;BR&gt;&lt;A href="http://www.cnblogs.com/m2land/archive/2008/08/07/1262674.html" target=_blank&gt;在DNN 4.X中自定义登录界面&lt;/A&gt;&lt;BR&gt;&lt;A href="http://blogs.snapsis.com/PermaLink,guid,05e0a045-4944-4f85-aa12-ac9cb774e2fb.aspx" target=_blank&gt;Can't Login to your DotNetNuke Portal?&lt;/A&gt;&lt;BR&gt;&lt;A href="http://blogs.snapsis.com/PermaLink,guid,3078311e-6925-4c03-8243-d1b9c8a11906.aspx" target=_blank&gt;DotNetNuke Login is not working!! How am I going to get back in?&lt;/A&gt;&lt;/DIV&gt;</description>
      <link>http://www.dnnsun.com/Community/BaldwinsBlog/tabid/67/entryid/59/Default.aspx</link>
      <author>dnnsun@gmail.com</author>
      <comments>http://www.dnnsun.com/Community/BaldwinsBlog/tabid/67/entryid/59/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnsun.com/Community/BaldwinsBlog/tabid/67/entryid/59/Default.aspx</guid>
      <pubDate>Fri, 22 Aug 2008 09:23:04 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.dnnsun.com/DesktopModules/SunBlog/Trackback.aspx?id=59</trackback:ping>
    </item>
  </channel>
</rss>