예제 #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="jwtOptions"></param>
 public JwtFactory(IOptions <JwtIssuerOptions> jwtOptions)
 {
     _jwtOptions = jwtOptions.Value;
     ThrowIfInvalidOptions(_jwtOptions);
 }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="user"></param>
        /// <param name="roles"></param>
        /// <param name="jwtFactory"></param>
        /// <param name="jwtOptions"></param>
        /// <returns></returns>
        public static async Task <object> GenerateJwt(User user, IList <string> roles, IJwtFactory jwtFactory, JwtIssuerOptions jwtOptions)
        {
            var claims = new List <Claim>
            {
                new Claim(ClaimsIdentity.DefaultNameClaimType, user.UserName)
            };

            claims.Add(new Claim(ClaimsIdentity.DefaultRoleClaimType, string.Join(',', roles)));
            claims.Add(new Claim("Owner", user.Owner ? "true" : "false"));

            return(new
            {
                user.UserName,
                roles,
                user.Owner,
                auth_token = await jwtFactory.GenerateEncodedToken(user.UserName, claims),
                expires_in = (int)jwtOptions.ValidFor.TotalSeconds
            });
        }