Туплю - FormsAuthentication в ASP.NET
вот отрывок :
http://www.aspnetmania.com/Articles/Article/47.html#IDA54Cполный вариант
Выше были описаны все возможные атрибуты раздела forms,но для корректной работы приложения достаточно использовать лишь 3 из них, как это показано в следующем листинге:
<forms name=”ASP_XML_Form” loginUrl=”login.aspx” protection=”All” />
name – имя cookie-файла, в который будут внесены данные об успешном прохождении аутентификации
protection – принимает значения All|None|Encryption|Validation и определяет способ защиты данных в cookie-файлах. Из допустимых значений видно, что можно ничего не делать с полученными данными и принимать их такими, какие они есть; можно сверять их; можно шифровать; а также есть возможность объединить верификацию с криптографией – такое значение используется по умолчанию.
<authentication mode=”Forms”>
<forms name=”ASP_XML_Form” loginUrl=”login.aspx” protection=”All” timeout=”30” path=”/”
requireSSL=”false” slidingExpiration=”true”>
<credentials passwordFormat=”Clear”>
<user name=”John” password=”one”/>
<user name=”Mike” password=”two”/>
<user name=”Bill” password=”three”/>
</credentials>
</forms>
</authentication>
Кстати Cookie при авторизации точно создается ?
неуказанные атрибута, если не ошибаюсь, берутся из machine.config
Интересно, а файл cookie при авторизации вообще создается ?
ага, мне тоже это интересно. По коду по крайней мере создается
Ну так глянь, не появился ли файл с датой = времени регистрации ...
а где они хранятся?
C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
наверное удивишься, но у меня нет такого пути
если нет, то должен быть ...
Диск где стоит винда:\ Document and Settings\{username}\Local Settings\Temporary Internet Files
В качестве {username} твой логин в винде ...
пожалуйста, для неверующих
включи показ hidden директорий и файлов
по картинке я так понял скрытые папки не отображаются...
блин, не нету этого куки...
а какого спрашивается он не пишется
а он точно из под vs у меня туда должен писатся?
и аттрибуты все-таки попробовать указать name и protection , непонятно почему в статье написано 'достаточно 3-х', можно было по идее написать что достаточно одного. Тем более name - имя cookie файла, близко к проблеме...
E:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\QuickStart\aspplus\samples\security\userauth\cs
в общем кука создается, посмотрел
блиииииииин, работает. Ща буду изучать
наконец-то и у меня заработало!
вот только непонятно, почему это не хочет работать если делать не как script, а как Codebehind методом?
(нужно переименовать в rar)
а пришли почтой, если несложно
а сжать zip'ом и выложить по-человечески было не судьба?..
Блин, не знал я про возможность закачки zip - файлов...
там же русским языком написано, "В настоящее время можно загружать файлы с раширением .gif, .jpg, .png и .zip размером не больше 256Кб. "
Наверное вредно по 16 часов подряд заниматся программированием - на ровном месте начинаешь тупить
Так где грабли лежат ?
Может так как я до этого делал и нельзя было сделать...
а с каталогами какая проблема?.. <location path=...> - и вперед!
ну смотри мой самый первый пост. Пути у меня прописаны были. А в чем проблемы была - меня уже достало разбиратся
или я чего-то не понимаю?
а я location вообще не трогал. Все делал заданием authentication и authorization
в основном каталоге http://10.0.1.119/polls/default.aspx
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation defaultLanguage="c#" debug="true" />
<customErrors mode="RemoteOnly" />
<authentication mode="Forms" >
<forms loginUrl="logon.aspx" name="AuthCookie"/>
</authentication>
<authorization>
<allow users="*" />
</authorization>
<trace enabled="false" />
<sessionState
mode="InProc"
cookieless="false"
timeout="20"
/>
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
</system.web>
<location path="poll.aspx">
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="new-poll.aspx">
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>
В "защищенном": http://10.0.1.119/polls/test/test.aspx
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</configuration>
да, все ок
что, серьезно, в оба?.. а я вот почему-то когда иду по второй сылке (страница в папке test попадаю на login.aspx
ты ба там хот бы написал secretpage, а то пустое место
ну что, еще вопросы какие-нибудь есть?
<location path="poll.aspx">
<location path="new-poll.aspx">
ну типа смотреть результаты могут все, создавать и голосовать - только авторизованные (что вроде бы разумно). Просто, отдельные настройки для отдельных страниц
А что сия секция значит?
вряд ли дело в location (т.к. он там только на 2 страницы действует, вообще, см. msdn а скорее всего в <authentication mode="Forms" /> в "защищенном" конфиге или в том что там нет <allow users="*" />
"защищенном" конфиге или в том что там нет <allow users="*" />
ага , у меня на самом деле тоже про него первая мысль была. Ладно, вечеком все же проверю
Вот только мне непонятно, как до этого куска выполнение может доходить. Ведь если юзер неавторизован - он отбрасывается deny users = "?", а если авторизован - то проходит. А зачем еще <allow users="*" />?
Remarks
At run time, the authorization module iterates through the <allow> and <deny> tags until it finds the first access rule that fits a particular user. It then grants or denies access to a URL resource depending on whether the first access rule found is an <allow> or a <deny> rule. The default authorization rule in the Machine.config file is <allow users="*"/> so, by default, access is allowed unless configured otherwise.
так что allow all лучше всегда писать: хрен знает что там может быть написано в конфиге сайта, родительских папок или машины
Оставить комментарий
vijrel7878
ЗАДАЧА: сделать формс аутентификацию.Имплементация: делается каталог с login page и public page, в этом какталоге защищенный каталог.
В защищенном Web.config
<authentication mode="Forms" />
<authorization>
<deny users="?" />
</authorization>
В открытом
<authentication mode="Forms">
<forms loginUrl="/Открытый/Login.aspx">
<credentials passwordFormat="Clear">
<user name="name" password="pass" />
</credentials>
</forms>
</authentication>
При заходе на страничку в открытом каталоге вызывается по клику Response.Redirect("закрытый/моя станичка.aspx");
Затем это хозяйство идет на logn page, там вводиться логин/пароль и делается
if (FormsAuthentication.Authenticate (NameEdit.Text,PassEdit.Text
FormsAuthentication.RedirectFromLoginPage (NameEdit.Text, false);
else Output.Text = "Invalid login";
Так вот
ЭТОТ РЕДИРЕКТ ХОТЬ УБЕЙ НЕ РАБОТАЕТ!
куки у меня включены в браузере. В чем фишка - не пойму. Под отладчиком направляется на верный url, но не переходит. Снова на login page оказывается.
Может в закрытой страничке нужно какие-то ждействия предпринимать?