ASP.NET MVC 3 с сервисным клиентом в качестве уровня доступа к базе данных - PullRequest
0 голосов
/ 03 марта 2012

Я пишу приложение MVC 3, в котором не используется классический подход к доступу к базе данных с использованием Entity Framework.Вместо этого у меня есть другое приложение, объединенное со службами WCF, которые используются для управления доступом к базе данных.Теперь я хочу использовать эти сервисы в своем приложении MVC для доступа к базе данных.Эта часть проста.В этом сценарии становится сложнее управлять аутентификацией и авторизацией.

Для аутентификации и авторизации я создал собственных провайдеров членства и ролей.Я реализовал необходимые методы, но здесь я столкнулся с проблемой.Моим службам требуются имя пользователя и пароль, чтобы получить список ролей пользователей.

Мне интересно, как я могу сохранить имя пользователя и пароль, предоставленные пользователем при входе в систему, где-то в резервной копии моего приложения, чтобы убедитьсятакое сохранение и возможность использовать его в моем поставщике ролей?

Является ли сеанс правильным выбором для этого?Если да, как я могу получить доступ к сеансу пользователя в моем поставщике ролей?

1 Ответ

1 голос
/ 03 марта 2012

Вы никогда не должны использовать пароли, вместо этого используйте хэши паролей (конечно, с правильной солью). Итак, теперь вы можете передать хэш имени пользователя и пароля вашему поставщику ролей, который, в свою очередь, передаст его вашему wcf, который предоставит или не предоставит необходимые роли.

Обновление

Метод IsUserInRole должен выглядеть так:

public class WcfRoleProvider: RoleProvider
{
    public bool IsUserInRole(string username, roleName)
    {
        bool result = false;
        using(WcfRoleService roleService = new WcfRoleService())
        {
            result = roleService.IsUserInRole(username, roleName);
        }

        return result;
     }
}
...