摘要:在前后端分离的项目里,我们请求接口的流程一般是用户使用用户名密码登录信息正确,接口返回请求需要登录验证的接口,将放到里一起请求接口这里介绍一下,在项目里,是怎么生成的项目的引用里,右键管理程序包搜索,安装即可,要注意项目的要大于等于代码如下
在前后端分离的项目里,我们请求接口的流程一般是:
用户使用用户名密码登录
信息正确,接口返回token
请求需要登录验证的接口,将token放到header里一起请求接口
这里介绍一下,在webapi项目里,token是怎么生成的
项目的引用里,右键:管理NuGet程序包
搜索JWT,安装即可,要注意项目的.NetFrameWork 要大于等于4.6
代码如下
public class TokenInfo { public TokenInfo() { UserName = "jack.chen"; Pwd = "jack123456"; } public string UserName { get; set; } public string Pwd { get; set; } } public class TokenHelper { public static string SecretKey = "This is a private key for Server";//这个服务端加密秘钥 属于私钥 private static JavaScriptSerializer myJson = new JavaScriptSerializer(); public static string GenToken(TokenInfo M) { var payload = new Dictionary{ {"UserName", M.UserName},//用于存放当前登录人账户信息 {"UserPwd", M.Pwd}//用于存放当前登录人登录密码信息 }; IJwtAlgorithm algorithm = new HMACSHA256Algorithm(); IJsonSerializer serializer = new JsonNetSerializer(); IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder(); IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder); return encoder.Encode(payload, SecretKey); } public static TokenInfo DecodeToken(string token) { try { var json = GetTokenJson(token); TokenInfo info = myJson.Deserialize (json); return info; } catch (Exception) { throw; } } public static string GetTokenJson(string token) { try { IJsonSerializer serializer = new JsonNetSerializer(); IDateTimeProvider provider = new UtcDateTimeProvider(); IJwtValidator validator = new JwtValidator(serializer, provider); IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder(); IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder); var json = decoder.Decode(token, SecretKey, verify: true); return json; } catch (Exception) { throw; } } }
使用cookie也是一样,用户登录之后,用特定的方法生成cookie,返回到浏览器,浏览器每次请求接口或者访问页面的时候,都会带上cookie信息,用于身份验证
c#生成cookie的方法:
public class UserModel { public string UserName { get; set; } public string Pwd { get; set; } } public class CookieHelper { private static JavaScriptSerializer myJson = new JavaScriptSerializer(); ////// 设置登录信息cookie /// /// public static void SetUserCookie(UserModel model) { FormsAuthentication.SetAuthCookie(model.UserName, false); string userStr = myJson.Serialize(model); //创建ticket FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, model.UserName, DateTime.Now, DateTime.Now + FormsAuthentication.Timeout, false, userStr); //加密 var cookieValue = FormsAuthentication.Encrypt(ticket); var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieValue) { HttpOnly = true, Secure = FormsAuthentication.RequireSSL, Domain = FormsAuthentication.CookieDomain, Path = FormsAuthentication.FormsCookiePath }; //写入cookie HttpContext.Current.Response.Cookies.Remove(cookie.Name); HttpContext.Current.Response.Cookies.Add(cookie); } ////// 获取登录信息的cookie /// ///public static UserModel GetUserCookie() { var cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName]; if (object.Equals(cookie, null) || string.IsNullOrEmpty(cookie.Value)) { return null; } try { var ticket = FormsAuthentication.Decrypt(cookie.Value); if (!object.Equals(ticket, null) && !string.IsNullOrEmpty(ticket.UserData)) { UserModel userData = myJson.Deserialize (ticket.UserData); return userData; } } catch (Exception) { } return null; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/109808.html
摘要:服务器检查该,以此来辨认用户状态。如果为,表示删除该。防篡改签名服务器为每个项生成签名。服务端根据接收到的内容和签名,校验内容是否被篡改。算法得到的签名和请求中数据的签名不一致,则证明数据被篡改。 一、登录认证机制 随着互联网的不断发展,无论是网站还是app,一般都会要求用户注册/登录。主要的登录方式有账户密码登录、第三方登录(微信登录、QQ登录、微博登录等) 登录可分为三个阶段(登录...
摘要:的优势使用简单,性能足够强悍,储存空间无限制,多台服务器可以使用统一的登录态,登录逻辑代码的解耦。每次登录时清除上一次用户的登录信息,即清除登录校验信息,这样就能保证同一用户同一时间只能在一个地方登录。 HI!,你好,我是zane,zanePerfor是一款我开发的一个前端性能监控平台,现在支持web浏览器端和微信小程序端。 我定义为一款完整,高性能,高可用的前端性能监控系统,这是未来...
摘要:浏览器的同源策略把跨域请求都禁止了,但是页面中的标签是例外,不受同源策略限制。的理念就是,与服务端约定好一个回调函数名,服务端接收到请求后,将返回一段,在这段代码中调用了约定好的回调函数,并且将数据作为参数进行传递。我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Sessi...
阅读 1303·2021-11-11 11:00
阅读 2993·2021-09-24 09:47
阅读 4895·2021-09-22 15:53
阅读 927·2021-09-10 10:50
阅读 3185·2021-09-01 11:40
阅读 1139·2019-08-30 15:55
阅读 453·2019-08-30 12:49
阅读 1016·2019-08-29 17:12