|
- using Microsoft.AspNetCore.Authentication.JwtBearer;
-
- namespace SafeCampus.Web.Core;
-
- /// <summary>
- /// 认证相关组件
- /// </summary>
- public sealed class AuthComponent : IServiceComponent
- {
- public void Load(IServiceCollection services, ComponentContext componentContext)
- {
- // JWT配置
- services.AddJwt<JwtHandler>(enableGlobalAuthorize: true, jwtBearerConfigure: options =>
- {
- //signalr jwt配置
- options.Events = new JwtBearerEvents
- {
- OnMessageReceived = context =>
- {
- var accessToken = context.Request.Query["access_token"];
-
- // If the request is for our hub...
- var path = context.HttpContext.Request.Path;
- if (!string.IsNullOrEmpty(accessToken) && path.StartsWithSegments("/hubs"))
- {
- // Read the token out of the query string
- context.Token = accessToken;
- }
- return Task.CompletedTask;
- }
- };
- });
- // 允许跨域
- services.AddCorsAccessor();
-
- //注册自定义授权筛选器
- services.AddMvcFilter<MyAuthorizationFilter>();
- }
- }
|