/// <summary> /// Gets the token. /// </summary> /// <param name="userName">Name of the user.</param> /// <returns></returns> public TokenResponse GetToken(TokenRequest tokenRequest) { //token, 有个Id和User, TokenResponse response = new TokenResponse(); GetTokenBase(tokenRequest, response); return response; }
/// <summary> /// Validates the token. /// 在securitylist里面找token.id对应的user /// 项目用到的 /// </summary> /// <param name="token">The token.</param> /// <returns></returns> public TokenResponse ValidateToken(TokenRequest tokenRequest) { TokenResponse tokenResponse = new TokenResponse(); ValidateTokenBase(tokenRequest, tokenResponse); return tokenResponse; }
/// <summary> /// Validates the token base. /// </summary> /// <param name="tokenRequest">The token request.</param> /// <param name="tokenResponse">The token response.</param> private void ValidateTokenBase(TokenRequest tokenRequest, TokenResponse tokenResponse) { tokenResponse.User = new User(); lock (synchronizeObjectCall) { //tokenRequest.Token , tokenRequest.User = null //所以只能用tokenRequest.Token.Id去验证 if (iPow.Service.SSO.WebService.SecurityTokenService.SecurityTokenList.Contains(tokenRequest.Token.TokenId)) { //存在这个token.id SecurityToken securityToken = iPow.Service.SSO.WebService.SecurityTokenService.SecurityTokenList[tokenRequest.Token.TokenId]; //一个请求token的过期时间 //如果大于了过期时间的话,也不会有用的 TimeSpan differenceTime = DateTime.Now - securityToken.CreateTime; if (differenceTime <= tokenTimeOut) { tokenResponse.User = securityToken.User; } //token用一欠,就删除 iPow.Service.SSO.WebService.SecurityTokenService.SecurityTokenList.Remove(securityToken); } } }
/// <summary> /// Gets the token base. /// </summary> /// <param name="tokenRequest">The token request.</param> /// <param name="response">The response.</param> private void GetTokenBase(TokenRequest tokenRequest, TokenResponse response) { response.Token = new Token(); lock (synchronizeObjectCall) { //通过user是否登陆,去判断是否登陆了,如果登陆了才发放,token.id var userIsOnline = iPow.Service.SSO.WebService.OnLineUserService.OnLineUserList .Where(e => e.id == tokenRequest.User.id && e.username == tokenRequest.User.username) .FirstOrDefault(); if (userIsOnline != null) { SecurityToken securityToken = new SecurityToken() { User = tokenRequest.User, TokenId = response.Token.TokenId, CreateTime = DateTime.Now }; iPow.Service.SSO.WebService.SecurityTokenService.SecurityTokenList.Add(securityToken); //发放token.id // response.Token.TokenId = iPow.Service.SSO.WebService.TokenBuilderService.BuilderTokenId(); } } }