Как вызвать хранимую процедуру aspnet_usersinroles_isuserinrole с помощью dapper ORM
Привет. Мне нужно вызвать aspnet_UsersInRoles_IsUserInRole из членства в Aspnet.Я делаю такой щеголеватый звонок:
с уважением.
Что я уже пробовал:
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.
У меня есть тестер с пользователями numerus, и я пытаюсь передать значение bool так же, как Execute и ExecutScalar, но все равно вызов возвращает 0 все время для всех пользователей.
Вот хранимая процедура из членства в AspNet:
USE [User2] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO ALTER PROCEDURE [dbo].[aspnet_UsersInRoles_IsUserInRole] @ApplicationName nvarchar(256), @UserName nvarchar(256), @RoleName nvarchar(256) AS BEGIN DECLARE @ApplicationId uniqueidentifier SELECT @ApplicationId = NULL SELECT @ApplicationId = ApplicationId FROM aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName IF (@ApplicationId IS NULL) RETURN(2) DECLARE @UserId uniqueidentifier SELECT @UserId = NULL DECLARE @RoleId uniqueidentifier 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")]
F-ES Sitecore
Мой совет-не изобретать велосипед заново, используйте API membership\identity, чтобы узнать, находится ли учетная запись в роли.