"jwt": { "cret": "~!@#$%^&*()_+qwertyuiopasldkh[o51485421ajshk^%*)kasd", // 密钥 "issuer": "kfjdhf", // 颁发者 "audience": "kfjdhf", // 接收者 //"expired": 30 // 过期时间(30min) }
#region 注册jwt //获取配置文件 var jwtconfig = configuration.getction("jwt"); //生成密钥 var symmetrickeyasba64 = jwtconfig.getvalue<string>("cret"); var keybytearray = encoding.ascii.getbytes(symmetrickeyasba64); var signingkey = new symmetriccuritykey(keybytearray); //认证参数 rvices.addauthentication("bearer") .addjwtbearer(o => { o.tokenvalidationparameters = new tokenvalidationparameters { validateissuersigningkey = true,//是否验证签名,不验证的画可以篡改数据,不安全 issuersigningkey = signingkey,//解密的密钥 validateissuer = true,//是否验证发行人,就是验证载荷中的iss是否对应validissuer参数 validissuer = jwtconfig.getvalue<string>("iss"),//发行人 validateaudience = true,//是否验证订阅人,就是验证载荷中的aud是否对应validaudience参数 validaudience = jwtconfig.getvalue<string>("aud"),//订阅人 validatelifetime = true,//是否验证过期时间,过期了就拒绝访问 clockskew = timespan.zero,//这个是缓冲过期时间,也就是说,即使我们配置了过期时间,这里也要考虑进去,过期时间+缓冲,默认好像是7分钟,你可以直接设置为0 requireexpirationtime = true, }; 试用期员工考核表 }); #endregion
(2).configure启用
app.uauthentication();//jwt
using microsoft.extensions.configuration;using microsoft.identitymodel.tokens;using system;using system.collections.generic;using system.identitymodel.tokens.jwt;using system.linq;using system.curity.claims;using system.text; namespace systemapi.jwt{ public class jwthelper { public jwthelper(iconfiguration configuration) { configuration = configuration; } /// <summary> /// 配置属性 /// </summary> public iconfiguration configuration { get; } /// <summary> /// 生成token /// </summary> /// <returns></returns> public string genera托福官网报名tetoken(list<claim> claims) { var jwtconfig = configuration.getction("jwt"); //秘钥,就是标头,这里用hmacsha256算法,需要256bit的密钥 var curitykey = new signingcredentials(new symmetriccuritykey(encoding.ascii.getbytes(jwtconfig.getvalue<string>("cret"))), curityalgorithms.hmacsha256); //claim,jwtregisteredclaimnames中预定义了好多种默认的参数名,也可以像下面的guid一样自己定义键名. //claimtypes也预定义了好多类型如role、email、name。role用于赋予权限,不同的角色可以访问不同的接口 //相当于有效载荷 list<claim> baclaims = new list<claim>{ new claim(jwtregisteredclaimnames.iss,jwtconfig.getvalue<string>("issuer")), new claim(jwtregisteredclaimnames.aud,jwtconfig.getvalue<string>("audience")), new claim("guid",guid.newguid().tostring("d")), new claim(claimtypes.role,"admin"), };黄石市人事局 西宫秋怨 claims = claims.union<claim>(baclaims).tolist<claim>();//合并claim,删除重复项目 curitytoken curitytoken = new jwtcuritytoken( signingcredentials: curitykey, expires: datetime.now.adddays(1),//过期时间 claims: claims 分式方程的解法 ); //生成jwt令牌 return new jwtcuritytokenhandler().writetoken(curitytoken); } } }
/// 登录 /// </summary> /// <returns>登录</returns> [httpget] public returnjson login(string name, string pwd) { ur data = bll.login(name, pwd); if (data!=null) { if (data.name == name && data.password == pwd) { list<claim> claims = new list<claim>() { new claim(claimtypes.nameidentifier, data.name), new claim(claimtypes.role,data.adminid.tostring()), new claim("adminrole",data.adminid.tostring()) }; string token=jwthelper.generatetoken(claims); return new returnjson<string>().success(token); }; } return new returnjson().fail(); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 02:36:42,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/4b382258d2e1f928c770edad7772456d.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:.net core api接口JWT方式认证Token.doc
本文 PDF 下载地址:.net core api接口JWT方式认证Token.pdf
留言与评论(共有 0 条评论) |