Пример #1
0
 public LoginController(ILogger <LoginController> logger, IConfiguration configuration, IOptions <JwtSettingOptions> jwtSettingOptions, PermissionRequirement requirement)
 {
     _logger            = logger;
     _configuration     = configuration;
     _jwtSettingOptions = jwtSettingOptions.Value;
     _requirement       = requirement;
 }
Пример #2
0
 /// <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));
            }
        }
Пример #4
0
        // 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);
        }
Пример #5
0
        /// <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;
        }
Пример #6
0
        /// <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));
        }