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"?>
要使用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>