Ich muss nennen aspnet_UsersInRoles_IsUserInRole von Aspnet Membership.Im machen adrett Aufruf wie folgt nennen:Wie aspnet_UsersInRoles_IsUserInRole Stored Procedure mit Dapper 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();
}
}
Und in Controller ich hinzufügen:
public int IsUserInRole(IsUserInRole isUserInRole)
{
var model = _userRepository.CheckIfUserIsInRole(new IsUserInRole()
{
UserName = "testuser",
RoleName = "user",
ApplicationName = "USERMANAGEMENT"
});
return model;
}
Der Benutzer existieren und haben die richtige Rolle, aber jedes Mal gibt 0. Hier ist die gespeicherte Prozedur von AspNet Mitgliedschaft:
ALTER PROCEDURE [dbo].[aspnet_UsersInRoles_IsUserInRole]
@ApplicationName nvarchar(256),
@UserName nvarchar(256),
@RoleName nvarchar(256)
AS DECLARE BEGIN @ApplicationId unique SELECT @ApplicationId = NULL SELECT @ApplicationId = ApplicationId VON aspnet_Applications WHERE LOWER (@ApplicationName) = LoweredApplicationName IF (@ApplicationId IS NULL) RETURN (2) DECLARE @UserId unique SELECT @UserId = NULL DECLARE @RoleId unique 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
Wo ich mich irre? Irgendein Rat, wie man es repariert?
Ich brauche diese gespeicherte Prozedur zu überprüfen, ob der Benutzer in dieser Rolle ist, damit ich es für verwenden können [AuthorizeRoles („RoleTest“)]
Vielen Dank. Das hat das Problem gelöst :) – Tozi