ASP.netMVC.netframework4.8和ASP.netMVCCore6之间的共享用户身份无法工作。
创始人
2024-09-19 02:30:33
0次

在ASP.net MVC .netframework 4.8应用程序中使用Cookie来维护用户身份,而在ASP.net MVC Core 6应用程序中使用Json Web Tokens(JWT)来实现身份验证和授权。因此,它们之间共享用户身份变得困难。但是,可以通过将JWT作为 .netframework 4.8应用程序中的Cookie存储或使用ASP.net Core Identity来实现共享用户身份。

以下是使用ASP.net Core Identity实现身份验证和授权的示例代码:

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
  services.AddIdentity()
    .AddEntityFrameworkStores()
    .AddDefaultTokenProviders();

  // configure JWT token authentication
  var key = Encoding.ASCII.GetBytes(Configuration.GetValue("JwtKey"));

  services.AddAuthentication(options =>
  {
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
  })
  .AddJwtBearer(options =>
  {
    options.RequireHttpsMetadata = false;
    options.SaveToken = true;
    options.TokenValidationParameters = new TokenValidationParameters
    {
      ValidateIssuerSigningKey = true,
      IssuerSigningKey = new SymmetricSecurityKey(key),
      ValidateIssuer = false,
      ValidateAudience = false
    };
  });
}

// controller
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class MyController : ControllerBase
{
  // controller actions
}

在ASP.net Core 6应用程序中生成JWT并在 .netframework 4.8 应用程序中读取和解析:

// ASP.net Core 6
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(Configuration.GetValue("JwtKey"));

var tokenDescriptor = new SecurityTokenDescriptor
{
  Subject = new ClaimsIdentity(new Claim[]
  {
    new Claim(ClaimTypes.Name, username),
    new Claim(ClaimTypes.Role, role)
  }),
  Expires = DateTime.UtcNow.AddHours(1),
  SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};

var token = tokenHandler.CreateToken(tokenDescriptor);
var encodedToken = tokenHandler.WriteToken(token);

// .netframework 4.8
var handler = new JwtSecurityTokenHandler();
var jwt = handler.ReadJwtToken(encodedToken);
var identity = new ClaimsIdentity(jwt.Claims);

使用此方法可以在ASP.net MVC .netframework 4.8和ASP.net MVC Core

相关内容

热门资讯

黑科技辅助器!在哪里下载微乐自... 黑科技辅助器!在哪里下载微乐自建房辅助软件(辅助器),微乐宁夏捉麻子其实是有透视挂脚本1、这是跨平台...
黑科技透视器!微乐小程序黑科技... 黑科技透视器!微乐小程序黑科技免费(透视器),微乐衡阳十五胡好像真的是有透视挂软件1)微乐小程序黑科...
黑科技透视挂!微信微乐小程序辅... 黑科技透视挂!微信微乐小程序辅助软件(透视挂),微乐河北麻将确实真的是有透视挂方法1、该软件可以轻松...
黑科技作弊器!微乐广西小程序脚... 黑科技作弊器!微乐广西小程序脚本(作弊器),微乐陕西挖坑都是存在有透视挂攻略1、上手简单,内置详细流...
黑科技辅助!微乐自建房插件详细... 黑科技辅助!微乐自建房插件详细教程(辅助),微乐内蒙麻将果然是有透视挂插件1、下载好微乐自建房插件详...
黑科技辅助!微信微乐自建房脚本... 黑科技辅助!微信微乐自建房脚本免费下载(辅助),微乐内蒙麻将本来真的是有透视挂插件进入游戏-大厅左侧...
黑科技透视挂!微信小程序微乐辅... 黑科技透视挂!微信小程序微乐辅助器ios(透视挂),微乐天津麻将手机版好像存在有透视挂工具1、操作简...
黑科技辅助!微乐广西小程序插件... 黑科技辅助!微乐广西小程序插件(辅助),微乐龙江麻将总是真的有透视挂软件在进入微乐广西小程序插件软件...
黑科技作弊器!微乐小程序免费黑... 黑科技作弊器!微乐小程序免费黑科技下载(作弊器),微乐丹东麻将果然真的有透视挂教程1、每一步都需要思...
黑科技透视器!微乐小程序辅助脚... 黑科技透视器!微乐小程序辅助脚本靠谱的(透视器),陕西微乐麻将原来是有透视挂软件1、玩家可以在微乐小...