Назначение токена в веб-интерфейсе - удостоверение личности пользователя.Вот способ, которым я создал токен.
public AuthTokenModel GenerateToken(string UserName, string password, string appCode)
{
var tokenExpiration = TimeSpan.FromSeconds(Convert.ToDouble(GetAppSettingsValue("TokenExpiry")));
ClaimsIdentity identity = new ClaimsIdentity(OAuthDefaults.AuthenticationType);
identity.AddClaim(new Claim("loginId", UserName));
identity.AddClaim(new Claim("password", password));
identity.AddClaim(new Claim("applicationCode", appCode));
var props = new AuthenticationProperties()
{
IssuedUtc = DateTime.UtcNow,
ExpiresUtc = DateTime.UtcNow.Add(tokenExpiration),
};
var ticket = new AuthenticationTicket(identity, props);
var accessToken = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);
AuthTokenModel model = new AuthTokenModel();
model.AccessToken = string.Format("{0} {1}", "bearer", accessToken);
model.TokenType = "bearer";
model.ExpiresIn = tokenExpiration.TotalSeconds.ToString();
model.Expires = ticket.Properties.ExpiresUtc.ToString();
model.Issued = ticket.Properties.IssuedUtc.ToString();
return model;
}
и Модель определяется как:
public class AuthTokenModel
{
public string AccessToken { get; set; }
public string TokenType { get; set; }
public string ExpiresIn { get; set; }
public string Issued { get; set; }
public string Expires { get; set; }
}
, но я хочу знать, если я добавлю больше информации о пользователе в токене, этолучший подход?и какова производительность, если я получу дополнительную информацию из токена, а не из базы данных.