我需要调用aspnet_UsersInRoles_IsUserInRole从ASPNET Membership.Im制作短小精悍的电话是这样的:如何调用aspnet_UsersInRoles_IsUserInRole存储过程小巧玲珑的ORM
public int CheckIfUserIsInRole(IsUserInRole userInRole)
{
using (var connection = new SqlConnection(ConfigurationSettings.GetConnectionString()))
{
DynamicParameters param = new DynamicParameters();
param.Add("@UserName", userInRole.UserName);
param.Add("@ApplicationName", userInRole.ApplicationName);
param.Add("@RoleName", userInRole.RoleName);
return connection.Query("aspnet_UsersInRoles_IsUserInRole", param, commandType: CommandType.StoredProcedure).FirstOrDefault();
}
}
并在控制器我补充一下:
public int IsUserInRole(IsUserInRole isUserInRole)
{
var model = _userRepository.CheckIfUserIsInRole(new IsUserInRole()
{
UserName = "testuser",
RoleName = "user",
ApplicationName = "USERMANAGEMENT"
});
return model;
}
用户存在并且具有正确的作用,但每次返回0. 这里是从AspNet成员的存储过程:
ALTER PROCEDURE [dbo].[aspnet_UsersInRoles_IsUserInRole]
@ApplicationName nvarchar(256),
@UserName nvarchar(256),
@RoleName nvarchar(256)
AS BEGIN DECLARE @ApplicationId唯一标识符 SELECT @ApplicationId = NULL SELECT @ApplicationId =的applicationID FROM aspnet_Applications WHERE LOWER(@ApplicationName)= LoweredApplicationName IF(@ApplicationId IS NULL) RETURN(2) DECLARE @UserId唯一标识符 SELECT @UserId = NULL DECLARE @RoleId唯一标识符 SELECT @RoleId = NULL
SELECT @UserId = UserId
FROM dbo.aspnet_Users
WHERE LoweredUserName = LOWER(@UserName) AND ApplicationId = @ApplicationId
IF (@UserId IS NULL)
RETURN(2)
SELECT @RoleId = RoleId
FROM dbo.aspnet_Roles
WHERE LoweredRoleName = LOWER(@RoleName) AND ApplicationId = @ApplicationId
IF (@RoleId IS NULL)
RETURN(3)
IF (EXISTS(SELECT * FROM dbo.aspnet_UsersInRoles WHERE UserId = @UserId AND RoleId = @RoleId))
RETURN(1)
ELSE
RETURN(0)
END
我错在哪里? 任何建议如何解决它?
我需要这个存储过程来检查,如果用户是该角色,所以我可以用它来[AuthorizeRoles(“RoleTest”)
非常感谢。这解决了问题:) – Tozi