我正在开发一个ASP NET MVC 5网站,其中我需要为WPF客户端提供WebApi。客户端需要为用户发送用户名和密码,WebApi需要检查用户名和密码是否正确以及用户名是否属于admin角色(由我的网站定义)。
我正在使用Visual Studio 2013,因此,为了添加角色,我使用服务器资源管理器直接将条目添加到AspNetRoles和AspNetUserRoles表中。 (例如,我添加了管理员角色,并将user1映射到管理员角色)
我发现要检查用户名和密码是否正确,我可以使用默认帐户控制器中登录功能使用的相同代码。我发现在查找用户名来检查角色名称时遇到问题。我不是以编程方式添加角色;我只想检查user1是否已映射到AspNetUserRoles表中的admin角色。
有人可以建议怎么做吗?
答案 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查询。