ASP.NET C # - настройка безопасности на основе ролей с помощью проверки подлинности с помощью форм - PullRequest
1 голос
/ 25 апреля 2011

Я унаследовал приложение ASP.NET C #, которое не полностью работает.Мне сказали использовать проверку подлинности по форме, чтобы предотвратить доступ неуполномоченных пользователей к определенным подкаталогам.

У меня проблемы с пониманием проверки подлинности с помощью форм.Это общедоступный интернет-сайт, и все пользователи будут иметь доступ к основной части сайта.Однако есть подкаталог, доступ к которому разрешен только определенным пользователям.Я знаю, что пользователь действителен, потому что он введет имя пользователя и пароль, и я буду искать их в базе данных.Я добавил эти строки в файл web.config подкаталога.

<configuration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
        <authorization>
      <allow roles="Administrators, Examiners"/>
            <deny users="*"/>
        </authorization>
    </system.web>

Вопрос в том, как установить в своем коде, что пользователь принадлежит определенной роли.

Вот псевдокод.

Если имя пользователя и пароль совпадают, то

Установите для этой роли пользователей значение Examiners.

Я не знаю код, который мне нужен для назначения пользователю роли.

Ответы [ 4 ]

1 голос
/ 25 апреля 2011

Взгляните на свою базу данных членов.

Чтобы начать здесь, используйте метод входа в систему:

protected void LoginButton_Click(object sender, EventArgs e)
{
 // Validate the user against the Membership framework user store
 if (Membership.ValidateUser(UserName.Text, Password.Text))
 {
 // Log the user into the site
 FormsAuthentication.RedirectFromLoginPage(UserName.Text, RememberMe.Checked);
 }
 // If we reach here, the user's credentials were invalid
 InvalidCredentialsMessage.Visible = true;
}

вы можете проверить учетные данные пользователя в методе authenticate:

protected void myLogin_Authenticate(object sender, AuthenticateEventArgs e)
{
 // Get the email address entered
 TextBox EmailTextBox = myLogin.FindControl("Email") as TextBox;
 string email = EmailTextBox.Text.Trim();

 // Verify that the username/password pair is valid
 if (Membership.ValidateUser(myLogin.UserName, myLogin.Password))
 {
 // Username/password are valid, check email
 MembershipUser usrInfo = Membership.GetUser(myLogin.UserName);
 if (usrInfo != null && string.Compare(usrInfo.Email, email, true) == 0)
 {
 // Email matches, the credentials are valid
 e.Authenticated = true;
 }
 else
 {
 // Email address is invalid...
 e.Authenticated = false;
 }
 }
 else
 {
 // Username/password are not valid...
 e.Authenticated = false;
 }
}

Для перенаправления в зависимости от конкретной роли используйте этот код:

protected void Login1_LoggedIn(object sender, EventArgs e)
{
    if (Roles.IsUserInRole(Login1.UserName, "Admin"))
    {
         Response.Redirect("~/Admin/Default.aspx");
    }
    else if (Roles.IsUserInRole(Login1.UserName, "Examiner"))
    {
         Response.Redirect("~/Examiner/Default.aspx");
    }
    else
    {
         Response.Redirect("~/Login.aspx");
    }
}
0 голосов
/ 02 мая 2014

перейдите по ссылке, указанной ниже

[http://www.asp.net/web-forms/tutorials/security]

0 голосов
/ 25 апреля 2011

Вам потребуется реализовать поставщика членства и ролей, который работает с вашей базой данных. Поставщик членства будет аутентифицировать пользователя и отслеживать, какой пользователь вошел в систему. Поставщик роли определит, какие разрешения имеет пользователь.

Похоже, вы подходите к проблеме с неправильной стороны, если речь идет о поставщиках членства и роли .NET. Вместо того, чтобы проверять подлинность своих пользователей, а затем сообщать членству и библиотеке ролей Microsoft, кто вошел в систему и какие у них есть разрешения, .NET Framework будет проверять подлинность ваших пользователей с помощью поставщика членства, а также будет сообщать вашему приложению, какие разрешения имеет пользователь. с помощью поставщика ролей. По сути, вы будете создавать плагины для провайдеров членства и ролей.

См. здесь для получения дополнительной информации о реализации поставщика членства и здесь для аналогичной информации о реализации поставщика роли.

0 голосов
/ 25 апреля 2011

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

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