/// <summary> /// 生成访问令牌 /// </summary> /// <param name="accessToken"></param> /// <returns></returns> /// <exception cref="BIStudio.Framework.DefinedException"></exception> public SYSAccessToken GeneralTocken(SYSAccessTokenDTO accessToken) { //检查应用代码和密钥 var certificate = _certificateRepository.Get(item => item.ApiKey == accessToken.client_id && item.Secret == accessToken.client_secret); if (certificate.ID == null) { throw CFException.Create(STDAccessTokenResult.ClientIDOrSecretInvalid); } //验证授权码 var authorize = CacheService.Default.Get <SYSAuthorizeDTO>("STDAuthorizeDTO_" + accessToken.code); if (authorize.Equals(default(SYSAuthorizeDTO))) { throw CFException.Create(STDAccessTokenResult.CodeInvalid); } if (authorize.redirect_uri != accessToken.redirect_uri) { throw CFException.Create(STDAccessTokenResult.RedirectUriInvalid); } //验证用户登录 if (authorize.uid == null) { throw CFException.Create(STDAccessTokenResult.UIDInvalid); } //创建访问令牌 var token = new SYSAccessToken(certificate.SystemID.Value) //令牌有效期:2小时 { uid = authorize.uid.Value, scope = authorize.scope, }; return(token); }
/// <summary> /// 生成accesstocken之后操作存储 /// </summary> /// <param name="accessToken">访问令牌</param> /// <returns></returns> private SYSToken SaveToken(SYSAccessToken accessToken) { //获得应用账号 SYSAccount account = _accountRepository.Get(item => item.SystemID == accessToken.system_id && item.PassportID == accessToken.uid); //获得应用令牌 SYSToken token = _tokenRepository.Get(new TokenSpecification(accessToken.system_id, accessToken.uid)); if (enableConcurrentSessions || token.ID == null) { token.PassportID = accessToken.uid; token.SystemID = accessToken.system_id; token.AccountID = account.ID; token.UID = account.UID; token.AccessToken = accessToken.access_token; token.RefreshToken = ALUtils.GetGUIDShort(); token.RequestTime = DateTime.Now; token.RequestIP = CFContext.User.IP; token.Scope = accessToken.scope; token.ExpiresIn = DateTime.Now.AddSeconds(accessToken.expires_in); _tokenRepository.Add(token); } else { token.AccessToken = accessToken.access_token; token.Scope = accessToken.scope; token.ExpiresIn = DateTime.Now.AddSeconds(accessToken.expires_in); _tokenRepository.Modify(token); } return(token); }
public SYSAccessToken GeneralTocken(SYSAccessTokenDTO accessToken) { //检查应用代码和密钥 var certificate = _certificateRepository.Get(item => item.ApiKey == accessToken.client_id && item.Secret == accessToken.client_secret); if (certificate.ID == null) { throw CFException.Create(STDAccessTokenResult.ClientIDOrSecretInvalid); } //创建访问令牌 var token = new SYSAccessToken(certificate.SystemID.Value); //令牌有效期:2小时 return(token); }
/// <summary> /// 生成更新令牌 /// </summary> /// <param name="accessToken"></param> /// <returns></returns> /// <exception cref="BIStudio.Framework.DefinedException"></exception> public SYSAccessToken GeneralTocken(SYSAccessTokenDTO accessToken) { //检查更新令牌 var refreshToken = _tokenRepository.Get(item => item.RefreshToken == accessToken.refresh_token); if (refreshToken.ID == null) { throw CFException.Create(STDAccessTokenResult.ClientIDOrSecretInvalid); } //创建访问令牌 var token = new SYSAccessToken(refreshToken.SystemID.Value) { uid = refreshToken.PassportID, scope = refreshToken.Scope, }; return(token); }