ASP.NET MVC 3,服务客户端作为数据库访问层

时间:2012-03-03 12:10:37

标签: c# wcf asp.net-mvc-3 session roleprovider

我正在编写一个MVC 3应用程序,它不使用使用Entity Framework访问数据库的经典方法。相反,我有另一个由WCF服务组成的应用程序,用于管理数据库访问。现在我想在我的MVC应用程序中使用这些服务作为数据库访问。这部分很简单。在这种情况下,管理身份验证和授权变得越来越困难。

对于身份验证和授权,我创建了自定义成员资格和角色提供程序。我已经实现了必要的方法,但在这里我遇到了问题。我的服务需要用户名和密码才能获得用户角色列表。

我想知道如何在登录时,在我的应用程序支持的某个地方存储用户提供的用户名和密码,以确保它是保存的,并且可以在我的角色提供程序中使用它?

会话是正确的选择吗?如果是这样,我如何在我的角色提供者中访问用户的会话?

1 个答案:

答案 0 :(得分:1)

你永远不应该使用密码,而是使用密码哈希(当然是正确的腌制)。所以,现在你可以将用户名和密码哈希传递给你的角色提供者,而角色提供者又将它传递给你的wcf,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;
     }
}