Реализация настраиваемого входа в систему для ASP.NET MVC - PullRequest
4 голосов
/ 29 октября 2009

Я новичок в ASP.NET MVC и мне нужно немного советов о том, как реализовать следующее.

Сайт является интенсивно используемым сайтом с примерно 200 внутренними пользователями (интранет). Мы используем проверку подлинности форм с использованием базы данных SQL Server (не интегрированной с Windows).

Некоторые действия защищены, некоторые доступны для просмотра любому, а некоторые - обоим - поэтому, если вошедший в систему пользователь видит свои данные из БД, в противном случае они видят временный профиль - очень похоже на StackOverflow.

Как мне реализовать модель безопасности для этого сценария? Можно ли повторно использовать существующую платформу в ASP.NET MVC и использовать фильтры авторизации?

Существуют ли какие-либо статьи в Интернете, которые я могу использовать в качестве справки?

Ответы [ 3 ]

4 голосов
/ 29 октября 2009

У меня была та же проблема, так как я хочу реализовать членство asp.net в своей пользовательской базе данных, созданной пользователем, поэтому я решил переопределить поставщика членства aspnet по умолчанию для управления регистрацией пользователей и поставщика ролей aspnet для управления ролью пользователей. Например, мой пользовательский поставщик членства будет выглядеть вот так

namespace Entities
{
    public class VEMembership : MembershipProvider
    {
        public override bool ValidateUser(string username, string password)
        {
            // your logic to validate user
            // return false if not qualified, other wise true
        }
    }
}

А затем в файле веб-конфигурации вам просто нужно добавить поставщика членства по умолчанию в:

<membership defaultProvider="VEMembership">
    <providers>
        <clear/>
        <add name="VEMembership"
            type="Entities.VEMembership" 
            enablePasswordReset="true"
            requiresQuestionAndAnswer="false"
            requiresUniqueEmail="false"
            passwordFormat="Hashed"
            maxInvalidPasswordAttempts="5"
            minRequiredPasswordLength="6"
            minRequiredNonalphanumericCharacters="0"
            passwordAttemptWindow="10"
            passwordStrengthRegularExpression=""
            connectionString="VEConnectionString"/>
    </providers>
</membership>

В поиске Google есть много статей о поиске собственного провайдера членства в aspnet, если вам нужна помощь в этом. Надеюсь, это поможет

2 голосов
/ 01 февраля 2011

полный ответ на вашу проблему можно найти здесь

0 голосов
/ 29 октября 2009

Объект пользователя на странице имеет свойство IsAutheticated (User.Identity.IsAuthenticated), которое сообщит вам, прошел ли пользователь проверку подлинности или нет. Это в сочетании с условными операторами для отображения или скрытия данных / элементов управления (или элемента управления ASP .Net LoginView ) должно позволять вам делать то, что вы хотите. Кроме того, вы можете использовать поставщик ролей ASP .Net (или свернуть свой собственный настраиваемый поставщик), чтобы дополнительно определить, что ваши пользователи могут получать доступ / делать на основе назначенных им ролей.

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