public LoginController(ILogger <LoginController> logger, IConfiguration configuration, IOptions <JwtSettingOptions> jwtSettingOptions, PermissionRequirement requirement) { _logger = logger; _configuration = configuration; _jwtSettingOptions = jwtSettingOptions.Value; _requirement = requirement; }
/// <summary> /// ctor /// </summary> public ExternalAuthController(IOptions <FacebookAuthSettings> fbAuthSetting, UserManager <AppUser> userManager, UserContext userContext, ITokenUtility tokenUtility, IOptions <JwtSettingOptions> jwtOptions) { _fbAuthSettings = fbAuthSetting.Value; _userManager = userManager; _userContext = userContext; _tokenUtility = tokenUtility; _jwtOptions = jwtOptions.Value; }
public static void ShoutOnErrors(this JwtSettingOptions options) { if (options == null) throw new ArgumentNullException(nameof(options)); if (options.ValidFor <= TimeSpan.Zero) { throw new ArgumentException("Must be a non-zero TimeSpan.", nameof(JwtSettingOptions.ValidFor)); } if (options.SigningCredentials == null) { throw new ArgumentNullException(nameof(JwtSettingOptions.SigningCredentials)); } if (options.JtiGenerator == null) { throw new ArgumentNullException(nameof(JwtSettingOptions.JtiGenerator)); } }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers(); //添加jwt身份验证 JwtSettingOptions jwtSettingOptions = new JwtSettingOptions(); Configuration.GetSection("JwtSetting").Bind(jwtSettingOptions); if (jwtSettingOptions == null) { throw new ArgumentNullException("Audience", "Audience 节点未配置"); } services.Configure <JwtSettingOptions>(Configuration.GetSection("JwtSetting")); services.AddJwtBearerAuthentication(jwtSettingOptions.Issuer, jwtSettingOptions.Audience, jwtSettingOptions.Secret); //添加自定义授权 services.AddJwtBearerPolicy(jwtSettingOptions.Issuer, jwtSettingOptions.Audience, jwtSettingOptions.Secret, TimeSpan.FromDays(7)); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest); }
/// <summary> /// ctor /// </summary> /// <param name="userManager"></param> /// <param name="tokenUtility"></param> /// <param name="options"></param> public AuthController(UserManager <AppUser> userManager, ITokenUtility tokenUtility, IOptions <JwtSettingOptions> options) { _userManager = userManager; _tokenUtility = tokenUtility; _options = options.Value; }
/// <summary> /// Generate Jwt token /// </summary> /// <param name="identity"></param> /// <param name="tokenUtility"></param> /// <param name="userName"></param> /// <param name="jwtOptions"></param> /// <param name="serializerSettings"></param> /// <returns>return json string</returns> public static async Task <string> GenerateJwtJson(this ClaimsIdentity identity, ITokenUtility tokenUtility, string userName, JwtSettingOptions jwtOptions, JsonSerializerSettings serializerSettings) { var jwt = new { id = identity.Claims.Single(c => c.Type == "id").Value, auth_token = await tokenUtility.GenerateEncodedToken(userName, identity), expires_in = (int)jwtOptions.ValidFor.TotalSeconds }; return(JsonConvert.SerializeObject(jwt, serializerSettings)); }