コード例 #1
0
        public AuthToken GetAuthToken(LoginCredit credit)
        {
            string[] ipArr    = HttpContext.Connection.RemoteIpAddress.ToString().Split(':');
            string   clientIp = "localhost";

            if (ipArr.Length >= 4)
            {
                clientIp = ipArr[3];
            }
            return(new AuthHelper(clientIp).GetAuthToken(credit));
        }
コード例 #2
0
ファイル: AuthHelper.cs プロジェクト: SkyQAQ/Blog
 /// <summary>
 /// 获取授权Token
 /// </summary>
 /// <param name="credit">登录信息</param>
 /// <returns></returns>
 public AuthToken GetAuthToken(LoginCredit credit)
 {
     try
     {
         ConfigHelper _s_config = new ConfigHelper(Constants.SecurityCfgPath);
         AuthToken    result    = new AuthToken();
         if (credit.grant_type == "password")
         {
             string clientId = ValidVerifyCode(credit.verifycode1, credit.verifycode2);
             Login(clientId, credit.username, credit.password);
             ClaimsIdentity refresh_identity = new ClaimsIdentity(new Claim[]
             {
                 new Claim(ClaimTypes.Name, credit.username),
                 new Claim(ClaimTypes.AuthenticationMethod, "refresh")
             });
             result.refresh_token = GenerateJwtToken(refresh_identity, _refresh_token_expire_in, _s_config.Token_Key);
         }
         else if (credit.grant_type == "refresh_token")
         {
             credit.username      = CheckRefreshToken(credit.refresh_token);
             result.refresh_token = credit.refresh_token;
         }
         else
         {
             throw new Exception("Invalid grant_type !");
         }
         string         account         = "";
         string         userId          = GetUserIdByAccount(credit.username, out account);
         ClaimsIdentity access_identity = new ClaimsIdentity(new Claim[]
         {
             new Claim(ClaimTypes.NameIdentifier, userId),
             new Claim(ClaimTypes.Name, account),
             new Claim(ClaimTypes.Role, GetUserRoles(userId)),
             new Claim(ClaimTypes.AuthenticationMethod, "access")
         });
         result.access_token = GenerateJwtToken(access_identity, _token_expire_in, _s_config.Token_Key);
         result.token_type   = "Bearer";
         result.expires_in   = WuYao.ConvertTimeStamp(DateTime.Now.AddMinutes(_token_expire_in));
         return(result);
     }
     catch (Exception ex)
     {
         _log.Error(ex);
         throw ex;
     }
 }