Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Аутентификация ролями

Ответить
Настройки темы
.NET - Аутентификация ролями

В Поисках Истины


Сообщения: 802
Благодарности: 135


Конфигурация

Профиль | Отправить PM | Цитировать


Сразу прошу прощения, если не сюда пишу!
Здравствуйте!
Возникли проблемы с аутентификацией и авторизацией!
Читал статьи : Часть 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 все равно нету доступа
Что я упустил?, почему не работает?, подскажите

Отправлено: 15:52, 06-02-2011

 

В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Разобрался, нашел что упустил. Держите, может кому пригодится :

В обработчике AuthenticateRequest:
Код: Выделить весь код
HttpApplication app = (HttpApplication)sender;
if (app.Request.IsAuthenticated)
{
       string[] roles;
       if (app.Request.Cookies[".RolesMisis"] == null)
       {
           Здесь выполнить, например, поиск по базе если куки нет)
       }
       else
       {
           FormsAuthenticationTicket ticket =FormsAuthentication.Decrypt(app.Context.Request.Cookies[".RolesMisis"].Value);
           roles = ticket.UserData.Split(new char[] { ';' });
       }
           app.Context.User = new GenericPrincipal(app.Context.User.Identity, roles);
}
Вот вроде бы и все) У меня работает!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 16:16, 09-02-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Аутентификация ролями

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Kerio - Аутентификация пользователей virtys Сетевые технологии 1 17-08-2010 20:12
FreeBSD - AD аутентификация zelo Общий по FreeBSD 0 10-12-2008 17:45
Не удается аутентификация SergeiS Microsoft Windows NT/2000/2003 5 07-04-2006 11:53
Аутентификация по сети Sscare Microsoft Windows NT/2000/2003 1 13-02-2006 12:26
Аутентификация ZhenDos Хочу все знать 1 26-05-2004 00:58




 
Переход