0

я создал поставщик пользовательских ролей с помощью следующей перегруженной методы:Пользовательские роли Provider переменных

public override string[] GetRolesForUser(string username) 
    { 
     MyAppUser user = userRepository.Get(u => u.Username == username).FirstOrDefault(); 
     //MyAppUser user = userRepository.Get(u => u.Username == "testuser").FirstOrDefault(); 
     if (user == null) 
     { 
      string[] roles = new string[1]; 
      roles[0] = "Fail"; 
      return roles; 
     } 
     else 
     { 
      Role role = roleRepository.Get(r => r.RoleID == user.RoleID).FirstOrDefault(); 
      if (role == null) 
      { 
       string[] roles = new string[1]; 
       roles[0] = "Fail"; 
       return roles; 
      } 
      else 
      { 
       string[] roles = new string[1]; 
       roles[0] = role.Name; 
       return roles; 
      } 
     } 

    } 

При нажатии на раздел сайта, который имеет право только редактора я успешно поражая выше метод при прохождении в имени пользователя непосредственно «testuser», но в остальном мой параметр username всегда пуст. Где этот параметр заполнен? И как это сделать, чтобы мой текущий подписанный пользователь был проверен здесь, у меня есть класс MyAppUser, который содержит данные пользователя, но проверка подлинности выполняется за пределами приложения с помощью ADFS, и поэтому у нас нет аутентификации внутри проекта.

ответ

0

Где этот параметр населенный?

Обычно метод GetRolesForUser вызывается из кода клиента (код, который вы пишете в приложении), так что на вас должно быть передано имя пользователя. UserName обычно является именем пользователя входа, которое пользователь использовал для входа в вашу систему, чтобы вы его получили.

В случае, если вы хотите открыть его в программе, вы могли бы быть в состоянии использовать

System.Web.HttpContext.Current.User.Identity.Name 

в ASP.NET MVC.