2014-12-08 5 views
6

Я работаю над системой аутентификации, которая использует идентификатор ASP.NET с Entity Framework, и я хочу иметь несколько утверждений, которые являются вычисленными значениями, а не жестко закодированы в таблице претензий ,Динамические требования пользователей в ASP.NET Identity EF

Когда пользователь входит в систему, как я могу добавить динамические претензии к этому сеансу входа, фактически не добавив их в таблицу претензий?

Например, я могу захотеть сохранить DOB каждого пользователя, но я хочу добавить IsBirthday в качестве претензии, если дата входа совпадает с DOB пользователя. Я не хочу хранить заявку «IsBirthday» для каждого пользователя, так как она ежедневно меняется для всех.

В моем коде, я использую это войти в систему:

var signInResult = await SignInManager.PasswordSignInAsync(username, password, false, false); 

После этого называется я могу сослаться на ClaimsPrincipal, но свойство Иски является IEnumerable, а не список, поэтому я не могу добавить к нему.

EDIT: Следует также упомянуть, что я использую библиотеки Microsoft.AspNet.Identity.Owin.

+0

Ответ Пер Криса Пратта, в соответствии с этой настройкой я бы сохранил ДОБ как свойство на модели. – zaparker

ответ

11

ОК, все, я немного поработал в классах, предоставляемых в ASP.NET Identity, и нашел тот, который мне нужно было переопределить. Класс SignInManager имеет метод CreateUserIdentityAsync, который делает именно то, что я хотел. Следующий код добавил заявку IsBirthday на мою личность, но не сохранил ее в базе данных.

public class ApplicationSignInManager : SignInManager<ApplicationUser, string> 
{ 
    public override async Task<System.Security.Claims.ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user) 
    { 
     var identity = await base.CreateUserIdentityAsync(user); 
     identity.AddClaim(new System.Security.Claims.Claim("IsBirthday", user.DOB.GetShortDateString() == DateTime.Now.GetShortDateString())); 
     return identity; 
    } 

    // ... EXCLUDING OTHER STUFF LIKE CONSTRUCTOR AND OWIN FACTORY METHODS ... 
} 
Смежные вопросы