Войти с помощью FormsAuthentication.Authenticate
Я пытаюсь создать файл cookie для аутентификации, с помощью которого пользователь может войти на мой сайт.
У меня есть форма входа в систему, как это:
<asp:TextBox ID="txtUsername" runat="server" MaxLength="10" Text="Sam001" ></asp:TextBox>
<asp:TextBox ID="txtPassword" runat="server" MaxLength="10" Text="Pass01" ></asp:TextBox>
<asp:Label ID="status" runat="server" ></asp:Label>
<asp:Button CssClass="button" ID="Submit" runat="server" Text="Logga in" OnClick="Login_Click" />
И тогда эта кнопка делает это в коде позади:
protected void Login_Click(object sender, EventArgs e)
{
DbReader listData = new DbReader();
Employee tempEmp = null;
if ((tempEmp = listData.GetUser(txtUsername.Text, txtPassword.Text)) != null) // check if username and pw was correct
{
FormsAuthentication.SetAuthCookie(tempEmp.EID, false); // create auth cookie
Debug.WriteLine("auth cookie set for: " + tempEmp.EID);
if (FormsAuthentication.Authenticate(tempEmp.EID, txtPassword.Text)) // check if name and pass is valid
{
Debug.WriteLine("auth validation ok");
FormsAuthentication.RedirectFromLoginPage(tempEmp.EID, false); // redirect
status.Text = User.Identity.Name; // set status to the Name property of the auth cookie
}
else
{
status.Text = "failed to Authenticate";
}
}
else
{
status.Text = "failed to get user";
}
}
и в Web.config это выглядит так:
<authentication mode="Forms">
<forms name="LoggedInUser" loginUrl="~/Login.aspx" protection="All" timeout="10" path="/" />
</authentication>
Почему я всегда получаю "не удалось проверить подлинность"? Что я делаю не так, когда я хочу создать cookie-файл для аутентификации, который вошел в систему для доступа пользователей к определенным страницам?
2 ответа
Метод Authenticate работает со списком пользователей и паролей, хранящихся в web.config.
Поэтому, чтобы использовать это, ваш web.config должен выглядеть примерно так:
<authentication mode="Forms">
<forms name="LoggedInUser" loginUrl="~/Login.aspx" protection="All" timeout="10" path="/" />
<credentials passwordFormat="SHA1">
<user name="user1" password="27CE4CA7FBF00685AF2F617E3F5BBCAFF7B7403C" />
<user name="user2" password="D108F80936F78DFDD333141EBC985B0233A30C7A" />
<user name="user3" password="7BDB09781A3F23885CD43177C0508B375CB1B7E9"/>
</credentials>
</forms>
</authentication>
Этот пример был получен со страницы Microsoft, описывающей метод аутентификации.
Кроме того, важно отметить, что Microsoft объявила этот метод устаревшим и предлагает вместо этого использовать одного из поставщиков членства.
Простите если я ошибаюсь но
Это может иметь отношение к рулонам.
У меня были похожие проблемы с моим проектом, но я обнаружил это; для каждого пользователя вы хотите назначить бросок в пользовательской таблице.
В web.config вы захотите добавить что-то похожее на следующее:
<authorization>
<!-- Order and case are important below -->
<allow roles="User"/>
<deny users="*"/>
</authorization>
Я использовал это руководство, чтобы помочь мне начать...