2013-04-05 133 views
2

我目前正在尝试创建自己的CMS系统。内容管理系统安全性?

在“/tools/default.aspx”页面上,我登录,登录成功后,重定向到“/tools/cms.aspx”。

我已经使用了Windows身份验证来阻止对文件夹的不必要的访问,但如果我的页面“/cms/cms.aspx”型,我可以无需登录访问CMS

编辑:

我禁止访问CMS,但现在登录无法正常工作,我仍然可以访问其文件夹。

/tools/web.config:

<?xml version="1.0"?> 
    <configuration> 
     <system.web> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
     </system.web> 

    <location path="default.aspx"> 
     <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
     </system.web> 
    </location> 

    <location path="styles"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

    <location path="images"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
      <allow users="*"/> 
     </authorization> 
     </system.web> 
    </location> 
    </configuration> 

的web.config:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms name="CMSLogin" loginUrl="~/tools/default.aspx" protection="All" timeout="20" path="/" /> 
    </authentication> 
    <roleManager enabled="true" /> 
    </system.web> 
</configuration> 

*删除敏感的web.config信息

登录身份验证尝试:

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 
{ 
    string userName = Login1.UserName; 
    string passWord = Login1.Password; 
    bool rememberUserName = Login1.RememberMeSet; 

    using (SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["websiteContent"].ConnectionString)) 
    { 
     sqlCon.Open(); 
     string SQL = "SELECT CMS_Username, CMS_Password FROM CMS_Users WHERE CMS_Username ='" + userName + "' AND CMS_Password ='" + passWord + "'"; 
     using (SqlCommand sqlComm = new SqlCommand(SQL, sqlCon)) 
     { 
      sqlComm.ExecuteScalar(); 

      if (sqlComm.ExecuteScalar() != null) 
      { 
       Response.Redirect("cms.aspx"); 
      } 
      else 
      { 
       Session["UserAuthentication"] = ""; 
      } 
     } 
     sqlCon.Close(); 
    } 
} 
+0

你也许使用'MasterPages'或'Forms Authentication'你如何在你的.config文件中有'Authentication'设置? – MethodMan 2013-04-05 15:25:14

+1

另外,当你重新发明轮子时,我还会考虑实现你自己的用户密码,检查Sql Server。活动目录,...等' – MethodMan 2013-04-05 15:30:41

+0

您的问题听起来像您可能无意中混合了表单身份验证和Active Directory身份验证。我也想从.config中看到Authentication设置。 – 2013-04-05 17:35:02

回答

0

你可以请检查其页面加载事件中每个页面的会话变量值是否为空,或者您可以使用母版页并在其加载事件中执行相同的检查。