Сразу прошу прощения, если не сюда пишу!
Здравствуйте!
Возникли проблемы с аутентификацией и авторизацией!
Читал статьи :
Часть 1 и
Часть 2 Делал все так, как там описано!
В итоге ничего не работает :( Вот что у меня получается :
файл web.config :
Код:
<authentication mode="Forms">
<forms protection ="All" cookieless="UseCookies" name=".AuthMisis" defaultUrl="~/home.aspx" loginUrl="~/home.aspx"/>
</authentication>
в директории, где доступ только для ролей web.config(директория admins)
Код:
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Admins"/>
<deny users="*"/>
</authorization>
</system.web>
</configuration>
Пользователи и роли хранятся в таблицах базе SQLServer.
Есть страничка login.aspx, обработчик кнопки логин :
Код:
void login_Click(object sender, EventArgs e)
{
TextBox login = (TextBox)phProfile.FindControl("txtLogin");
TextBox pass = (TextBox)phProfile.FindControl("txtPass");
if ((login.Text.Length == 0) || (pass.Text.Length == 0))
return;
if (DB.FindUser(login.Text, pass.Text))
{
//Do It, If Founded
string Roles = DB.FindRoles(login.Text);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,login.Text,DateTime.Now,DateTime.Now.AddMinutes(20),false,Roles);
Roles = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(".RolesMisis",Roles));
FormsAuthentication.RedirectFromLoginPage(login.Text, false);
}
else
{
//Do It, If not Founded
return;
}
}
Методы FindUser и FindRoles, соответственно, возвращают true, если пользователь найден, и строку с содержимым ролей!
Оба метода возвращают все верно, было проверено!
После всего этого к страницам в директории admins все равно нету доступа :(
Что я упустил?, почему не работает?, подскажите :)