代码拉取完成,页面将自动刷新
目前,启用jwt和cookie共存验证后,api也必须写入cookie后才能验证通过,可不可以分别验证一下, api 验证jwt,mvc验证cookie
已经完成,晚上出demo。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
Furion v1.0.9.1 版本
using Furion.Authorization;
using Furion.Core;
using Furion.DataEncryption;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using System.Threading.Tasks;
namespace Furion.Web.Core
{
/// <summary>
/// JWT 授权自定义处理程序
/// </summary>
public class JwtHandler : AppAuthorizeHandler
{
public override Task HandleAsync(AuthorizationHandlerContext context)
{
// 获取当前数据库上下文
var httpContext = context.GetCurrentHttpContext();
var isValid = JWTEncryption.ValidateJwtBearerToken(httpContext, out var token);
// 验证 Token 和 权限
if ((token != null && !isValid)
|| (token == null && !context.User.Identity.IsAuthenticated)
|| !CheckAuthorzie(httpContext)) context.Fail();
var pendingRequirements = context.PendingRequirements;
// 通过授权验证
foreach (var requirement in pendingRequirements)
{
if (requirement is AppAuthorizeRequirement)
{
context.Succeed(requirement);
}
}
return Task.CompletedTask;
}
/// <summary>
/// 检查权限
/// </summary>
/// <param name="httpContext"></param>
/// <returns></returns>
private static bool CheckAuthorzie(DefaultHttpContext httpContext)
{
// 获取权限特性
var securityDefineAttribute = httpContext.GetMetadata<SecurityDefineAttribute>();
if (securityDefineAttribute == null) return true;
// 解析服务
var authorizationManager = httpContext.RequestServices.GetService<IAuthorizationManager>();
// 检查授权
return authorizationManager.CheckSecurity(securityDefineAttribute.ResourceId);
}
}
}
登录 后才可以发表评论