我正在编写一个MVC 3应用程序,它不使用使用Entity Framework访问数据库的经典方法。相反,我有另一个由WCF服务组成的应用程序,用于管理数据库访问。现在我想在我的MVC应用程序中使用这些服务作为数据库访问。这部分很简单。在这种情况下,管理身份验证和授权变得越来越困难。
对于身份验证和授权,我创建了自定义成员资格和角色提供程序。我已经实现了必要的方法,但在这里我遇到了问题。我的服务需要用户名和密码才能获得用户角色列表。
我想知道如何在登录时,在我的应用程序支持的某个地方存储用户提供的用户名和密码,以确保它是保存的,并且可以在我的角色提供程序中使用它?
会话是正确的选择吗?如果是这样,我如何在我的角色提供者中访问用户的会话?
答案 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;
}
}