HTTP-аутентификация в .NET - PullRequest
       40

HTTP-аутентификация в .NET

4 голосов
/ 29 сентября 2008

Можно ли создать .NET, эквивалентный следующему коду?

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
} else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>

Я хотел бы также определить статического пользователя / пароль в файле web.config. Это очень легко сделать в PHP, я не видел ничего, объясняющего, как это сделать в MSDN.


Все, что я хочу, это:

https://i.stack.imgur.com/IJE1b.png

Ответы [ 6 ]

3 голосов
/ 29 сентября 2008

Самый простой способ добиться того же, что и с кодом PHP, - это напрямую отправлять те же заголовки через Reponse.AppendHeader () .

Тем не менее, я бы предложил вам прочитать Учебное пособие по проверке подлинности с помощью ASP.NET Forms .

2 голосов
/ 29 сентября 2008

Вам необходимо внедрить базовую аутентификацию в ASP.NET, а не аутентификацию форм, как сказали выше респонденты. Хороший пример можно найти здесь .

0 голосов
/ 29 сентября 2008

Боюсь, я не могу вам помочь. Я не знаю, как получить такой диалог, кроме использования других настроек безопасности в IIS, таких как интегрированная безопасность (безопасность Windows). Если это все, что вам нужно, вам нужно зайти в IIS и отключить анонимный доступ, включить другой тип аутентификации, например, встроенный, базовый ,, и в своем коде вы можете проверить, что они вошли в систему, проверив:

System.Security.Principal.WindowsIdentity.GetCurrent().IsAuthenticated

Хотя IIS позаботится о проверке в этом случае. Кроме этого я не могу вам помочь.

Если вам это нужно, ссылка на Windows auth в asp.net: http://msdn.microsoft.com/en-us/library/ms998358.aspx

0 голосов
/ 29 сентября 2008

Обычно я делаю свою собственную аутентификацию asp.net на основе моего имени пользователя и паролей в базе данных. Для этого я создаю диалоговое окно имени пользователя и пароля на странице и имею кнопку входа в систему. Во время обратной передачи я делаю что-то вроде:

if(SecurityHelper.LoginUser(txtUsername.Text, txtPassword.Text))
{
    FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);
}

Делайте с этим, все, что вам нужно сделать, это то же самое, сверяйте имя пользователя и пароль с тем, что вы хотите, вы можете даже жестко закодировать, если вы хотите купить, я бы не рекомендовал его. \ если допустимо использовать статические методы класса formauthentication.

0 голосов
/ 29 сентября 2008

Да, вы можете указать учетные данные в файле web.config. ASP.NET также имеет встроенную систему членства и имеет элементы управления, такие как Login, для работы с ним, хотя это отличается от установки статических учетных данных в web.config.

Я думаю, что самый простой способ сделать то, о чем вы говорите, это защитить каталог в IIS.

0 голосов
/ 29 сентября 2008

Да, вы можете добавить в web.config и использовать формы аутентификации. Я не знаю php, поэтому я не могу помочь с остальным вашим вопросом

http://msdn.microsoft.com/en-us/library/aa720092(VS.71).aspx\

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...