检查用户名是否映射到角色

时间:2014-05-03 19:00:32

标签: asp.net-mvc asp.net-web-api

我正在开发一个ASP NET MVC 5网站,其中我需要为WPF客户端提供WebApi。客户端需要为用户发送用户名和密码,WebApi需要检查用户名和密码是否正确以及用户名是否属于admin角色(由我的网站定义)。

我正在使用Visual Studio 2013,因此,为了添加角色,我使用服务器资源管理器直接将条目添加到AspNetRoles和AspNetUserRoles表中。 (例如,我添加了管理员角色,并将user1映射到管理员角色)

我发现要检查用户名和密码是否正确,我可以使用默认帐户控制器中登录功能使用的相同代码。我发现在查找用户名来检查角色名称时遇到问题。我不是以编程方式添加角色;我只想检查user1是否已映射到AspNetUserRoles表中的admin角色。

有人可以建议怎么做吗?

1 个答案:

答案 0 :(得分:1)

实际上很容易。您可以在用户成功进行身份验证的位置执行检查角色。

我们假设有一个具有以下功能的用户存储库:

internal interface IUserReporsitory
{
    bool IsUserInRole(int userId, string rolename);
}

然后,该函数检查UsersRole表中的用户标识和角色名称的记录。

public class UserReporsitory : IUserReporsitory
{

    public bool IsUserInRole(object userId, string roleName)
    {
        //Query the  UsersInRole tables Join the Role Table for the user with Id = userId and RoleName=roleName       
    }
}

实际的实现是对数据库的SQL查询。