<address id="xpjh9"><listing id="xpjh9"><meter id="xpjh9"></meter></listing></address>

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
<noframes id="xpjh9">
<noframes id="xpjh9">

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
    <form id="xpjh9"></form><address id="xpjh9"><listing id="xpjh9"><menuitem id="xpjh9"></menuitem></listing></address>

      <noframes id="xpjh9">
      VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
      SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
      當前位置:
      首頁 > 數據庫 > Access數據庫 >
      • access數據庫之Web API與OAuth:既生access token,何生

      • 2019-07-02 21:39 來源:未知

      在前一篇博文中,我們基于 ASP.NET Web API 與 OWIN OAuth 以 Resource Owner Password Credentials Grant 的授權方式( grant_type=password )獲取到了 access token,并以這個 token 成功調用了與當前用戶(resource owner)關聯的 Web API。

      本以為搞定了 access token 就搞定了 Web API 的驗證與授權問題,可是發現 OAuth 中還有一種 token,叫 refresh token。開始的時候很是納悶,access token 已經能解決問題,為什么要搞定兩套 token,refresh token 有啥用?在納悶之下,發出了這樣的感慨:既生 access token,何生 refresh token?

      后來看了一些資料,有點明白了。refresh token 是專用于刷新 access token 的 token。

      為什么要刷新 access token 呢?一是因為 access token 是有過期時間的,到了過期時間這個 access token 就失效,需要刷新;二是因為一個 access token 會關聯一定的用戶權限,如果用戶授權更改了,這個 access token 需要被刷新以關聯新的權限。

      為什么要專門用一個 token 去更新 access token 呢?如果沒有 refresh token,也可以刷新 access token,但每次刷新都要用戶輸入登錄用戶名與密碼,多麻煩。有了 refresh token,可以減少這個麻煩,客戶端直接用 refresh token 去更新 access token,無需用戶進行額外的操作。

      兩個為什么也許沒有解釋清楚 refresh token 的用途,下面我們用示例代碼在 ASP.NET Web API 與 OWIN OAuth 中實際體驗一下,或許有更直觀的認識。

      (一)Refresh token 的生成、發放、保存

      實現一個 RefreshTokenProvider ,比如 CNBlogsRefreshTokenProvider。

      需要重載 Microsoft.Owin.Security.Infrastructure.AuthenticationTokenProvider 中的 Create() 與 Receive() 方法(或者直接實現 IAuthenticationTokenProvider 接口),示例代碼如下:

      復制代碼
      public class CNBlogsRefreshTokenProvider : AuthenticationTokenProvider
      {
          private static ConcurrentDictionary<string, string> _refreshTokens = new ConcurrentDictionary<string, string>();
      
          public override void Create(AuthenticationTokenCreateContext context)
          {
              string tokenValue = Guid.NewGuid().ToString("n");
      
              context.Ticket.Properties.IssuedUtc = DateTime.UtcNow;        
              context.Ticket.Properties.ExpiresUtc = DateTime.UtcNow.AddDays(60);
      
              _refreshTokens[tokenValue] = context.SerializeTicket();
      
              context.SetToken(tokenValue);
          }
      
          public override void Receive(AuthenticationTokenReceiveContext context)
          {
              string value;
              if (_refreshTokens.TryRemove(context.Token, out value))
              {
                  context.DeserializeTicket(value);
              }
          }
      }
      復制代碼

      (注:后來采用的是重載CreateAsync()方法)

      然后應用這個 CNBlogsRefreshTokenProvider:

      復制代碼
      public void ConfigureAuth(IAppBuilder app)
      {
          OAuthOptions = new OAuthAuthorizationServerOptions
          {
              TokenEndpointPath = new PathString("/token"),
              Provider = new CNBlogsAuthorizationServerProvider(),
              AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
              AllowInsecureHttp = true,
              RefreshTokenProvider = new CNBlogsRefreshTokenProvider()
          };
      
          app.UseOAuthBearerTokens(OAuthOptions);
      }
      復制代碼

      (二)驗證持有 refresh token 的客戶端

      重載 OAuthAuthorizationServerProvider.GrantRefreshToken() 方法,示例代碼如下:

      復制代碼
      using Microsoft.Owin.Security.OAuth;
      
      namespace OpenAPI.Providers
      {
          public class CNBlogsAuthorizationServerProvider : OAuthAuthorizationServerProvider
          {
              public override async Task GrantRefreshToken(OAuthGrantRefreshTokenContext context)
              {
                  var originalClient = context.Ticket.Properties.Dictionary["as:client_id"];
                  var currentClient = context.ClientId;
      
                  if (originalClient != currentClient)
                  {
                      context.Rejected();
                      return;
                  }
      
                  var newId = new ClaimsIdentity(context.Ticket.Identity);
                  newId.AddClaim(new Claim("newClaim", "refreshToken"));
      
                  var newTicket = new AuthenticationTicket(newId, context.Ticket.Properties);
                  context.Validated(newTicket);
      
                  await base.GrantRefreshToken(context);
              }
          }
      }
      復制代碼

      為了驗證client_id,需要在 GrantClientCredentials() 重載方法中保存client_id至context.Ticket:

      復制代碼
      namespace OpenAPI.Providers
      {
          public class CNBlogsAuthorizationServerProvider : OAuthAuthorizationServerProvider
          {
              public override async Task GrantClientCredentials(OAuthGrantClientCredentialsContext context)
              {
                  var oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType);
      
                  var props = new AuthenticationProperties(new Dictionary<string, string>
                      {
                          { "as:client_id", context.ClientId }
                      });
                  var ticket = new AuthenticationTicket(oAuthIdentity, props);
      
                  context.Validated(ticket);
              }    
          }
      }
      復制代碼

      只需實現上面這些代碼,其他的都由 Microsoft.Owin.Security.OAuth 幫你代勞了。

      (三)測試客戶端獲取 refresh token

      客戶端獲取 access token 與 refresh token 是一起的,示例代碼如下:

      復制代碼
      [Fact]
      public async Task GetAccessTokenTest()
      {
          var clientId = "[clientId]";
          var clientSecret = "[clientSecret]";
      
          var parameters = new Dictionary<string, string>();
          parameters.Add("grant_type", "password");            
          parameters.Add("username", "[username]");
          parameters.Add("password", "[password]");
      
          _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
              "Basic",
              Convert.ToBase64String(Encoding.ASCII.GetBytes(clientId + ":" + clientSecret)));
      
          var response = await _httpClient.PostAsync("/token", new FormUrlEncodedContent(parameters));
          var responseValue = await response.Content.ReadAsStringAsync();
      
          Console.WriteLine(responseValue);
      }
      復制代碼

      運行結果:

      復制代碼
      { 
          "access_token": "D3VjxsFvr...",
          "token_type": "bearer",
          "expires_in": 86399,
          "refresh_token": "7f7edd15cba043c29d487235c2276eb1"
      }
      復制代碼

      成功拿到了 access token。

      (四)測試客戶端用 refresh token 刷新 access token

      客戶端測試代碼如下:

      復制代碼
      public async Task GetAccessTokenByRefreshTokenTest()
      {
          var clientId = "[clientId]";
          var clientSecret = "[clientSecret]";
      
          var parameters = new Dictionary<string, string>();
          parameters.Add("grant_type", "refresh_token");
          parameters.Add("refresh_token", "7f7edd15cba043c29d487235c2276eb1");
      
          _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
              "Basic",
              Convert.ToBase64String(Encoding.ASCII.GetBytes(clientId + ":" + clientSecret)));
      
          var response = await _httpClient.PostAsync("/token", new FormUrlEncodedContent(parameters));
          var responseValue = await response.Content.ReadAsStringAsync();
      
          Console.WriteLine(responseValue);
      }
      復制代碼

      注:這段客戶端代碼與前一步中客戶端代碼的主要區別是少了下面傳遞 resource owner 用戶名與密碼的代碼,這就是 refresh token 的用途所在 —— 不需要用戶名與密碼就可以刷新 access token。

      parameters.Add("username", "[username]");
      parameters.Add("password", "[password]");

      運行結果:

      復制代碼
      {
          "access_token": "[new access token]",
          "token_type": "bearer",
          "expires_in": 86399,
          "refresh_token": "[new refresh token]"
      }
      復制代碼

      搞定!

      看起來挺簡單,卻折騰了一天。 希望在你折騰OAuth的時候,這篇博文能夠幫你減少折騰的時間。

      【參考資料】

      Adding Refresh Tokens to a Web API v2 Authorization Server

      EmbeddedResourceOwnerFlowWithRefreshTokens

      Katana source code

      Enable OAuth Refresh Tokens in AngularJS App using ASP .NET Web API 2, and Owin

      相關教程
      江苏快3 z03.com | 86611r.com | www.810262.com | www.8967p.com | 2851y.com | 45888c.com | www.flcb2.com | www.wy8008.com | 1213ppp.com | hb95996.com | www.671206.com | www.8808598.com | www.87680j.com | nnn1915.com | jbb76.cc | www.50732z.com | www.47711.com | qq01234.com | 38244t.com | www.808466.com | www.3066xx.com | www.30765.com | 00755b.com | www.106396.com | www.79966.com | www.3277msc.com | 5589333.com | spj04.com | www.xcw866.com | www.025155.com | www.042055.com | 56987ss.com | 737pcsi.cn | www.612918.com | www.7340333.com | www.872878.com | 316690.com | 0343o.com | 44pp8332.com | www.3qxc.com | www.69567p.com | www.cjycp55.com | 28485000.com | pjguizhou.com | www.130603.com | www.77803s.com | www.8888hj.com | www.9996nn.com | 4255aaa.com | 518cp-6.com | www.855765.com | www.1861222.com | www.8000hm.com | www.glc66.com | 3807ww.com | 3009k.com | www.704126.com | www.882918.com | www.695suncity.com | www.33333jsc.com | 55442007.com | 69096c.com | 967zz.com | www.qmfc1.com | www.56011w.com | www.5966rrr.com | www.a1a777.net | ssha0004.com | 3550p.com | dz881.com | www.ya002.com | www.bet3651689.com | www.sscb99.cc | www.13658017870.com | 2455i.com | vvv40033.com | 2jsaaa.com | feicai0537.com | www.920959.com | www.3334331.com | www.15365x.com | www.3335544.com | www.8494g.com | aa2205.com | 66681o.com | 57157r.com | ylzz8.cc | www.564880.com | www.5441z.com | www.tyc44222.com | www.5900666.com | www.77731x.com | www.hg2808kk.com | www.hggj.cc | 8827a.com | 3522g.vip | yth005.net | 667766m.com | 2127ss.com | www.640118.com | www.3479m.com | www.ihg5555.com | www.009289.com | www.bw9988.com | www.xb0027.com | www.tyc733.com | 8905s.com | 2643e.com | hg886.com | 76944.com | 7894j.com | 6220cc.com | www.99677i.com | www.574277.com | www.c5907.com | www.9149k.com | www.71233w.com | www.3a002.com | www.00778e.com | www.twcp00.com | www.84345.com | www.hg8237.com | www.xxx2205.com | www.yinhe1.cc | www.pj8365.com | 1343.com | www.004455.net | www.306004.com | vn8940c.com | 922850.com | 55kk8331.com | 55vv8332.com | 2864z.com | 2381yy.com | 2490w.com | 00uu8331.com | 999582.com | 2148888.net | 70118b.com | 11ll8331.com | 23249.com | t365e.com | 1294e.com | 4694z.com | 4546vip6.com | www.7435l.com | www.vns333399.com | www.199228.com | www.033033s.com | www.taobaobo5.com | www.4763333.vip | www.22832333.com | www.4972aa.com | www.347579.com | www.09569u.com | www.0393901.com | www.js3838.com | www.73256.com | www.vns916.com | www.hg7884.com | www.wsvip0.com | www.1389hh.com | www.rgcp333.com | www.xx3.com | www.bet63b.com | www.63606h.com | www.306531.com | www.hg6767b.com | www.60007p.com | www.5522u.cc | www.598300.com | www.357477.com | www.026918.com | lll0055.com | 15a8.net | 4812.com | 52599u.com | hg91778.com | www.qy324.com | www.3399365.com | www.88837j.com | www.142058.com | www.3893k.com | www.88166n.com | www.3032mm.com | www.6678687.com | www.76520x.com | www.ct8811.com | www.355225.com | 69111i.com | pj677r.com | dzj0707.com | 0559688.com | 6220c.com | www.hg33555.com | www.688222.com | www.85857y.com | www.390070.com | www.ribo80.cc | www.3478g.cc | www.295126.com | 88807o.com | 889q.net | 2381qq.com | www.i32126.cc | www.hg0180.com | www.19019u.com | www.48330q.com | www.1368t.cc | www.043552.com | 610260.com | 8159ww.cc | 3189bb.com | www.4766kk.com | www.msc855.com | www.6868.tw | www.81520.com | www.394211.com | 3007811.com | 3552p.com | 5003tt.com | www.amyh9888.com | www.5981v.com | www.9646v.com | www.855312.com | 81511d.com | 54146644.com | www.15000552959.com | www.27119.com | www.69989e.com | www.43818k.com | www.338081.com | sha9909.com | d62365.com | www.9444hg.com | www.5049v.com | www.89777g.com | www.771245.com | c53965.com | a99345.am | www.p31888.com | www.85857f.com | www.300726.com | www.677375.com | 76543v.com | 6150u.com | www.56520p.com | www.99113j.com | www.54400z.com | bwin940.co | 8890830.com | www.827558.com | www.77731s.com | www.0883888.com | www.550424.com | 1407j.com | yd12305.com | www.hg6929.com | www.56011i.com | www.819920.com | yhhainan.vip | feicai0411.com | www.888ding.com | www.37377y.com | www.547477.com | xpj-3730.com | www.68666i.com | www.2004m.com | www.bet73g.com | wzyxwz.com | 7605t.com | www.38200z.com | www.xpj2090.com | www.7793h.com | 2381yyy.com | 77605s.com | www.23545.com | www.9g9g9g.com | www.68689e.com | 3640i.com | www.v15542.com | www.668puj.com | www.495568.com | 61999yy.com | www.67797a.com | www.467155.com | www.599684.com | 87363a.com | www.bj0011.com | www.xpj228888.com | www.960201.com | 08159t.com | www.7720u.com | www.4058dd.com | www.770935.com | jsgj55.com | www.39695g.com | www.2000h.cc | www.80767v.com | 55797a.com | www.73077d.com | www.771496.com | 83086z.com | 0747i.com | www.h456x.com | www.987580.com | zhcpuu.com | www.n27229.com | www.69999.am | 87965xx.com | 2418m.com | www.365099.bet | www.744559.com | 22c53.com | www.hg8452.com | www.16878y.com | 1669o.com | www.56520f.com | www.win9789.com | 2019aa.cc | 22556r.com | www.7788msc.com | www.381860.com | 2078c.com | www.234k7.com | www.901758.com | hd3122.com | www.444540.com | www.75gcw.com | 55797w.com | www.hg8197.com | www.77802w.com | 3616b.com | www.4625j.com | www.20899.com | 58222s.com | www.181070.com | www.790711.com | wns880.com | www.88021ii.com | www.91233r.com | 61789y.com | www.3xh3.com | www.1035aa.com | hgvipvip3.com | www.807882.com | www.989569.com | 111ctx.com | www.28168.com | www.11czj.com | www.065766.com | 9339999o.com | www.bwinyz40.com | 0729.com | www.48373.com | www.337466.com | c89fh55.com | www.pj3998.com | www.3126j.com | js181.com | www.sj52388.com | www.303053.com | 3144vip.co | www.5551883.com | 2081.com | www.9816666.com | www.c5636.com | 3522600.com | www.bet63h.com | 2844d.com | www.vip6277.com | www.50026h.com | 0207893.com | www.ebo666.com | yk102.com | www.xw3333.com | www.50026w.com | 32666e.com | www.5446vv.com | z2894.com | www.hgbet7.com | www.cp689.vip | 9995w.cc | www.6678695.com | 7893w8.com | www.1168h.com | 9645nn.com | www.362868.com | www.979505.com | 2019b.cc | www.3978r.com | 3788ii.com | www.hg8kk.com | 99306a.com | www.7494455.com | www.685044.com | 51335u.com | www.66332f.com | d1915d.com | www.2021l.com | 6150t.com | www.yingle99.com | 922610.com | www.ccc826.com | www.363991.com | www.4763006.com | www.yw344.com | 888p1.cc | www.07163h.com | wns4.net | www.hh03035.com | 3656xx.com | www.81508.com | hg0038.com | www.cn365n.com | h83377.com | www.938i.cc | 3788kk.com | www.03365g.com | 850.com | www.11155508.com | www.50052e.com | www.pj2025.com | www.389544.com | www.7893w43.com | www.610026.com | www.yh06789.com | www.903117.com | www.252388.com | www.975559.com | www.56733d.com | www.sj119.9slyl.com | 15f9.net | www.805835.com | www.7435f.com | www.775780.com | www.tushan08.com | www.300388.com | www.pp3737.com | 80368l.com | www.14900c.com | 854817.com | www.c44vv.com | 7634245.xyz | www.9737kk.me | 2190b.com | www.509291.com | 3667.com | www.83033j.com | 7141oo.com | www.hf6880.com | www.115ag88.com | www.585808.com | www.7830z.com | www.040435.com | www.199088.com | 5906vv.com | www.9737vv.me | 80567k.com | www.youxi1314.com | 3663yh.com | www.29178g.com | www.xx0088.com | www.685044.com | www.2598567.com | 11669980.com | www.9b005.com | 809h22.com | www.3691x.com | lh66h.com | www.k795.com | www.3643g.com | 66094466.com | www.68277.com | 60166yh.com | www.fg9905.com | 888p1.cc | www.548477.com | www.6707555.com | a4255.com | www.8080999f.com | p88812.com | www.xcn1.com | www.5395287.com | 27878nn.com | www.4078r.com | 4025d.com | www.80767.com | www.365uu6.com | ttdl4008123.com | www.99113l.com | 40033bb.com | www.27989.cc | www.7830h.com | 28288n.com | www.47506z.com | yhguangxi.vip | www.876879.com | www.xaanf.com | 75878.com | www.1434x.com | 0080y.com | www.250756.com | www.35252w.com | 51133x.com | www.686pp.com | www.jsjlb8.com | 1634n.com | www.16065s.com | www.zb615.com | 9121904.com | www.6880uu.com | 8899988.com | www.557032.com | www.o7793.com | 66681p.com | www.hm5577.com | www.778123.com | 305.com | www.9149j.com | www.443709.com | pj88xx.com | www.97655g.com | www.88807q.com | x9996.com | www.5337933.com | www.alpk66.com | 38455.com | www.4833044.com | www.753055.com | hg837.com | www.89777w.com | www.8xinhao.com | 1466l.com | www.16065b.com | www.hgcn888.com | 55797.com | www.87668y.com | www.40033.1340033.com | pj88xx.com | www.35918b.com | www.hg3626.com | 4255ll.com | www.799439.com | www.rycp167.com | 3685m.com | www.43131r.com | www.63606o.com | www.js96333.com | 3775x.com | www.68682b.com | www.7172211.com | 4340w.com | www.610659.com | www.00772y.com | 8036hh.com | 2418k.com | www.yt2019.com | www.606881.com | 35222s.com | www.550346.com | www.3066ii.com | www.6033r.com | vip1449.com | www.9155b.cc | www.934498.com | l277.com | 08159y.com | www.08588e.com | www.js421.com | 50067b.com | P35o.com | www.4833011.com | www.97780099.net | 87680h.com | www.41518e.com | www.80032266.com | www.888vip6.com | 66681i.com | www.89894a.com | www.48330b.com | www.01678cp.com | 3890b.com | ylzz8.cc | www.771496.com | www.90653.com | ylpp234.com | 80850ff.com | www.16878w.com | www.cbvip.com | 2643j.com | 66300vip30.com | www.tj92.com | www.35252g.com | www.205611.com | 78666x.com | www.055972.com | www.xb8833.com | www.68683.com | hh5443.com | 6040099.com | www.971261.com | www.8645007.com | www.e30226.com | 4018y.com | 8868369.com | www.8839j.com | www.00772v.com | www.pj7897.com | yy3336.com | 365225c.com | www.9356z.com | www.55070s.com | www.8694t.com | 22296beijin.com | 664975.com | www.396.cc | www.69989e.com | www.5288js.com | 5443r.com | 0969.com | www.389744.com | www.818225.com | www.72msxfpta.com | www.7435y.com | yun888.com | vs665.com | www.907844.com | www.637907.com | www.9196hg.com | www.716988.com | 38848.com | 9949n.com | www.783802.com | www.587815.com | www.sun7789.com | www.617703.com | nn500f.com | 11422.cc | www.66332i.com | www.9478t.com | www.06386644.com | www.74109f.com | www.033033j.com | lc99y.com | 3189xx.com | www.338063.com | www.50080z.com | www.1754x.com | www.988300.com | www.7435k.com | 55545r.com | 2229.net | 06385050.com | www.864155.com | www.2418w.com | www.848777w.com | www.3877msc.com | www.9763333.com | 5309789.com | 3522nn.com | 4789801.com | www.701495.com | www.80075n.com | www.c2894.com | www.b8444.com | www.25288q.com | lemcoo.com | 998v.cc | j669933.com | xh15555.com | www.370766.com | www.6661f.cc | www.7240u.com | www.04567k.com | www.778123.com | www.betll365.com | 3089o.com | 33vne.com | 469.com | gm13800.com | s2146.com | www.521787.com | www.1777ac.com | www.80wb.top | www.574546.com | www.rg777.com | www.4646111.com | www.9889msc.com | yu989.com | 22jj8332.com | 3775h.com | 1596c.com | 820vv.com | b99474.com | www.215602.com | www.818797.com | www.26199.com | www.680508.com | www.596345.com | www.7415d.com | www.234k7.com | www.hg7651.com | www.0860q.com | www.546991.com | 56987ss.com | 9895t.com | 61328811.com | 4541r.com | 0729y.com | 667766xcom | hy846.com | 3007811.com | 27878oo.com | 8381qq.com | www.35155v.com | www.221075.com | www.560672.com | www.889688.com | www.3478a.cc | www.58699.cc | www.50024c.com | www.39500hh.com | www.9522888.com | www.9996qq.com | www.b94600.com | www.r999994.com | www.l2894.com | www.4521u.com | www.80188c.com | www.15365e.com | www.9737dd.com | www.9b003.com | www.55545a.com | www.58665g.com | www.998855e.com | www.29msxfptc.com | www.2266608.com | www.7335zz.com | www.447066.com | www.91088.com | www.p4042.com | www.dafabetbogg.com | www.mk939.com | www.258suncity.com | www.03.bet | www.5049r.com | www.tc1158.com | www.sscb00.cc | www.4727188.com | www.bwinyz32.com | www.45598f.com | www.8700666.com | www.9988gvb.com | www.9350.vip | www.fg9905.com | www.615006.com | www.61655s.com | www.66376.com | www.ban57.com | www.881805.com | www.579411.com | www.161763.com | 9694i.com | 3169r.com | bet99969.com | ppp1915.com | 3178811.com | 2324fff.com | 73055y.com | t47479.com | 88779193.com | www.5552558.com | www.hg4668.com | www.558575.com | www.5588135.com | www.88166n.com | www.820057.com | www.7zz66.com | www.991qp.com | www.6364q.com | www.924570.com | www.306922.com | 500000359.com | 60540022.com | w69441133.com | pjqinghai.com | 7744uuu.com | www.360025.com | www.04592004.com | www.16602i.com | www.tyc2633.com | www.869934.com | www.550021l.com | www.hczx3.com | www.376387.com | 2677iii.com | 77009193.com | 3534w.com | 8577h.cc | www.hg066.com | www.am187.com | www.600w.com | www.6889.am | www.50054p.com | www.934680.com | www.77803v.com | 66445003.com | f4255.com | ii5443.com | www.hg789.xyz | www.wp9977.com | www.4078k.com | www.mgm777c.com | www.okw7.com | www.097928.com | 38365l.com | 4022ee.com | 50128a.com | www.9785333.com | www.720c75.com | www.773560.com | www.7782f.com | www.205882.com | 36406611.com | 2324kkk.com | 121ccc.com | www.189555.com | www.sha2200.com | www.7239l.com | www.599840.com | hhvip65.com | 350833.com | 88905151.com | www.pj5664.com | www.6880qq.com | www.78949g.com | www.384077.com | 2277buyu.com | 999649.com | www.056987.com | www.198hg.com | www.hg82678.com | www.c9661.com | 3156sss.com | 477076.com | w32365.com | www.49200a.com | www.2566y9.com | www.000ac.com | 444000r.com | 3404g.cc | www.767166.com | www.84345.com | www.zzyl67.com | www.865510.com | 33115d.com | 73884.com | www.21365pp.com | www.5099nn.com | www.73166c.com | www.068625.com | 11018y.com | 9411ooo.com | www.4866a86.com | www.55717x.com | www.593500.com | 19991f.com | 2247q.com | www.358298.com | www.h3410.com | www.hjin6.com | t67890.com | 6261dd.com | www.7494455.com | www.js99968.com | www.qucw7.com | 86688098.com | 00773vv.com | www.xpj2108.com | www.blr9944.com | www.677397.com | 550111t.com | xpj668.com | www.lfcp098.com | www.0270n.com | 48455.com | 35222w.com | www.6767msc.com | www.466890.com | www.901387.com | 1389u.com | 20771122.com | www.601066.com | www.39058.cc | 76548.com | 55818w.com | www.4556711.com | www.06662.com | shen2211.com | tzvip2027.com | www.hg88996.com | www.772891.com | www.50026u.com | 4255.com | www.89880033.com | www.7240m.com | www.165370.com | pj88kk.com | www.666423.net | www.vn888567.cc | df8j.com | 6261520.com | www.sss998.com | www.703wb.com | 775081.com | 88112007.com | www.hg7743.com | www.41518w.com | 9365.la | 0600h.cc | www.19019b.com | www.899495.com | nce7998.com | www.6020400.com | www.630950.com | www.66653o.com | 00226132.com | www.3122t.com | www.8667x.com | dz75166.com | www.ag88.com | www.y6091.com | www.082707.com | 983888q.com | www.634599.com | www.2875u.com | 1597.com | www.76543z.com | www.1033.app | 301111.com | 500000735.com | www.57800m.com | www.564846.com | 8159rrr.cc | www.3157666.com | www.2350l.com | 2844s.com | www.pj1098.com | www.js18600.com | 33313d.com | www.ven0000.com | www.78680l.com | 99044.com | 21866v.com | www.c83377.com | www.52072u.com | 88807q.com | www.c30666.com | www.196346.com | 5597lkt.com | www.9737jj.me | www.339361.com | y68.com | www.5446jj.com | www.263289.com | 8827jj.com | www.55060n.com | www.190881.com | vv0203.com | www.6880yy.com | 38989s.com | xpj677i.com | www.8905t.com | 22999193.com | www.hd585.com | www.o98478.com | 1294.com | www.7025o.com | www.84499b.com | p82365.com | www.hg6136.com | www.1035r.com | d82365.com | www.3cq3.com | www.583792.com | dzc94.com | www.3066jj.com | 2334vip1.com | www.hg9016.com | www.ylylc09.com | 1775vv.com | www.51153.com | www.am6543.com | 55331gg.com | www.6bet005.com | vv968.com | www.0853c.com | www.6000hd.com | u2146.com | www.18997.com | www.505433.com | 500000724.com | www.7920d.com | 08778a.com | www.amdc0088.com | www.895544.com | y45638.com | www.69567a.com | x48q.com | www.333423.net | www.934680.com | 76886b.com | www.8877kcd.com | 33p88.cc | www.xg78.com | www.547377.com | 5002ee.com | www.pjzxyl.cn | 4828.com | www.lm55.com | 36508w.com | www.hgbet66.com | www.0014u.com | 2127yy.com | www.r99999.com | 3522nn.cc | www.77ms88.com | yin3434.com | www.pj7897.com | www.qilc9.com | 26119e.com | www.7240z.com | 3844r.com | www.677256.com | 6199900.com | www.nn32355.com | www.762918.com | 79964l.com | www.77802k.com | aa1915.com | www.40288t.com | 6063331.com | www.vip17.bet365zhongguo8.com | www.66376i.com | www.67797y.com | www.qilc5.com | 2767a.com | www.162323.com | pj00mm.com | www.2566y2.com | c388n.com | www.wd716.com | 99wb8.com | www.47343.com | www.50054o.com | www.4938h.com | www.652331.com | www.hj91888.com | www.5xci.com | 8577i.cc | www.50026z.com | lymm188.com | www.89777l.com | 3640w.com | www.1764.com | 3467n.cc | www.44118c.com | 1775s.com | www.4058gg.com | 54140044.com | www.7415o.com | 44077s.com | www.533163.com | 4066d.com | www.138cpr.com | hg999333n.com | www.c44ee.com | pj8ee.com | www.899500.cc |