DerekT-P
В вашем app_Code
папка, создайте новый класс, который наследует MembershipProvider
. Вам нужно будет импортировать System.Configuration.Provider
, System.Security.Cryptography
, System.Web.Configuration
и System.Net.Mail
.
Если вы попытаетесь скомпилировать этот новый класс, вы увидите, что вам нужно переопределить множество методов. Для большинства из них вы можете просто добавить определение метода и создать новое исключение NotImplementedException. В ValidateUser
, добавьте код, необходимый для проверки комбинации имени пользователя и пароля; это, вероятно, будет включать в себя извлечение строки из таблицы пользователей с столбцами username, hashedpassword и salt. Это зависит от вас, как/откуда вы получаете эти данные. (Не забудьте параметризовать любой запрос d/b, чтобы люди не вводили имя пользователя ';drop table users;--'
:-)
Затем на странице входа в систему добавьте элемент управления типа <aspx:Login>
и один из типов <aspx:PasswordRecovery>
. Установите свойства так, как вы хотите, вероятно, что-то вроде
<asp:Login runat="server" ID="login1" DestinationPageUrl="~/index"
FailureText="Username or Password not recognised"
BorderPadding="10"
InstructionText="If you are not an authorised user of the system, please do not attempt to log in"
DisplayRememberMe="true"
RememberMeSet="true"
RememberMeText="Stay logged in on this computer" />
<asp:PasswordRecovery runat="server" ID="passwordRecovery" ClientIDMode="AutoID"
BorderPadding="10"
SubmitButtonText="Reset P/W"
SuccessText="A new password has been emailed to you"
Usernametitletext="Request password reset"
UserNameLabelText="User name:" />
Далее, вам нужно рассказать ASP.Net чтобы использовать ваш новый код. В
Web.Config
, в
<system.web>
раздел, добавьте следующее:
<membership defaultProvider="MyProvider" userIsOnlineTimeWindow="15">
<providers>
<clear/>
<add name="MyProvider" description="My Membership provider" type="MyType" connectionStringName="MyConnection" applicationName="MyApplication" enablePasswordRetrieval="false" enablePasswordReset="false" requiresUniqueEmail="false" requiresQuestionAndAnswer="false" writeExceptionsToEventLog="false" passwordFormat="Hashed"/>
</providers>
</membership>
<authentication mode="Forms">
<forms loginUrl="login.aspx" protection="All" timeout="10080" defaultUrl="index.aspx" slidingExpiration="true" cookieless="UseCookies" requireSSL="false" name="MyAuth"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
Замените все значения атрибутов, которые начинаются "
Мой"с тем, что вы хотите / назвали свой класс. (На самом деле единственные, которые должны соответствовать чему-то еще, - это
MyConnection, который должен быть ссылкой на одно из ваших имен connectionString, и
Тип mytype это должно быть имя нового класса членства, который вы создали ранее. Любой запрос на ваш сайт теперь будет автоматически перенаправляться на страницу входа в систему (
логин.aspx-файл), который запросит у пользователя имя пользователя + пароль. После проверки (вашим классом) пользователь будет перенаправлен на
индекс.aspx-файл и последующие запросы будут аутентифицированы.
Вам потребуется указать данные SMTP-соединений в веб.конфиг тоже, для сброса пароля по электронной почте.
Это всего лишь краткий обзор, но он указывает вам правильное направление. Google "ASP.Net поставщик членства" и проверьте документацию для контроля входа в систему. Как только вы сделаете это однажды, вы обнаружите, что это легко сделать снова. Вы можете добавить "
location
"записи в ваш веб-конфиг, если есть страницы, к которым нужно получить доступ без входа в систему (например, экран "прощай" после выхода из системы!)