Authentication和RedirectFromLoginPage在.net上无法正常工作

本文关键字:常工作 工作 RedirectFromLoginPage net Authentication | 更新日期: 2023-09-27 18:30:11

我正在努力确保我的主页安全,以便在没有登录的情况下访问页面,并且已经阅读了很多关于身份验证/授权的内容。

第一个问题是,例如,即使我还没有登录,我仍然可以访问我的home.aspx。我设置了拒绝用户的授权,但它仍然有效。

第二个问题是,我给Hom放了一个defualUrl,因为我希望用户在正确登录后重定向到那个页面,但它仍然在搜索/devalt页面。。。。

希望有人能帮我。

这是一些代码。。

后的登录+代码

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<form id="form1" runat="server">
    <br />
<table>
  <tr>
    <td>
      Benutzer:</td>
    <td>
      <asp:TextBox ID="Username" runat="server" Width="120px" /></td>
    <td>
      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" 
        ControlToValidate="Username"
        Display="Dynamic" 
        ErrorMessage="Bitte Benutzer eingeben" 
        runat="server" />
    </td>
  </tr>
  <tr>
    <td>
      Passwort:</td>
    <td>
      <asp:TextBox ID="Password" TextMode="Password" 
         runat="server" Width="120px" />
    </td>
    <td>
      <asp:RequiredFieldValidator ID="RequiredFieldValidator2" 
        ControlToValidate="Password"
        ErrorMessage="Bitte Passwort eingeben" 
        runat="server" />
    </td>
  </tr>
</table>
<asp:Button ID="btnLogin" OnClick="btnLogin_Click" Text="Einloggen" 
   runat="server" />
<p>
  <asp:Label ID="Msg" ForeColor="red" runat="server" />
</p>

protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void btnLogin_Click(object sender, EventArgs e)
    {
        DataLayer.DataConnector dat = new DataLayer.DataConnector("Provider=SQLOLEDB; data source=rzwsrv010;database=event;user ID=event;password=event; Persist Security Info=False");
         DataTable dt = dat.DataSelect("select UserID from login where Username = '" + Username.Text.Replace("'", "''") + "' and Password = '" + Password.Text.Replace("'", "''") + "'");
         if (dt.Rows.Count > 0)
         {
             FormsAuthentication.RedirectFromLoginPage(Username.Text, false);
         }
         else
         {
             Msg.Text = "Falsche Benutzer oder Passwort";
         }
    }
protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void btnLogin_Click(object sender, EventArgs e)
    {
        DataLayer.DataConnector dat = new DataLayer.DataConnector("Provider=SQLOLEDB; data source=rzwsrv010;database=event;user ID=event;password=event; Persist Security Info=False");
         DataTable dt = dat.DataSelect("select UserID from login where Username = '" + Username.Text.Replace("'", "''") + "' and Password = '" + Password.Text.Replace("'", "''") + "'");
         if (dt.Rows.Count > 0)
         {
             FormsAuthentication.RedirectFromLoginPage(Username.Text, false);
         }
         else
         {
             Msg.Text = "Falsche Benutzer oder Passwort";
         }
    }

<?xml version="1.0" encoding="utf-8"?>

Authentication和RedirectFromLoginPage在.net上无法正常工作

要使用microsoft安全性,我相信你的配置中必须有成员身份。进行身份验证的最简单方法是针对用户所在的数据库运行aspnet_regsql.exe。这将创建默认情况下使用microsoft安全性的表等。这可能不是你想要实现它的方式,但它确实有效。

aspnet_regsql位于microsoft.net文件夹(如)中

C:'Windows'Microsoft.NET'Framework64'v4.0.30319

<connectionStrings>
<add name="Platform" connectionString="Data Source=[server];Initial Catalog=[database];Persist Security Info=True;User ID=[login];Password=password" providerName="System.Data.SqlClient" />
</connectionStrings>
<authentication mode="Forms">
  <forms loginUrl="/Login.aspx" defaultUrl="/Home.aspx" timeout="240" slidingExpiration="true" />
</authentication>
<authorization>
  <deny users="?"/>
</authorization>
<membership defaultProvider="Provider">
  <providers>
    <clear />
    <add name="Provider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="Platform" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" enablePasswordRetrieval="false" applicationName="/" />
  </providers>
</membership>