У меня есть сайт MVC4, и я недавно заметил какое-то неожиданное поведение относительно ролей, которое, я уверен, является тем, что я либо неправильно понял, либо пропустил, но я не могу увидеть проблему, но вот здесь;Непоследовательное поведение User.IsInRole()
On Login Я создаю authticket, включая информацию о ролях в Userdata.
В Application_AuthenticateRequest Я извлекаю данные о роли и назначаю их в CurrentUser.
Несмотря на то, что я подозреваю, что должен использовать механизм авторизации, может кто-нибудь понять, почему, когда я позже проверяю User.IsInRole(), он пытается использовать SqlServer, предположительно потому, что считает, что он действует как RoleProvider (его не установлено в config), почему он не просто получает его от текущего пользователя, как назначено в Global.asax?
ТИА, дана
[пропущен из моего Application_AuthenticateRequest]
try
{
if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated)
{
var currentUser = HttpContext.Current.User;
var formsId = currentUser.Identity as FormsIdentity;
var ticket = formsId.Ticket;
string userData = ticket.UserData;
var rolesString = userData.GetValueFromKeyValuePairs<string>("roles", "|");
var rolesList = rolesString.SplitAndType<string>("|").Select(s => s.ToLower().Replace(" ", ""));
if (rolesList.Count() > 0)
{
HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(ticket.Name), rolesList.ToArray());
}
}
}
catch (Exception ex)
{
if (Debugger.IsAttached)
{
throw ex;
}
}