コード例 #1
0
ファイル: OAuthController.cs プロジェクト: liupster/Stardust
        public TokenModel Token([FromBody] TokenInModel model)
        {
            var set = Setting.Current;

            // 密码模式
            if (model.grant_type == "password")
            {
                var app = _service.Authorize(model.UserName, model.Password, set.AutoRegister);

                // 更新应用信息
                app.LastLogin = DateTime.Now;
                app.LastIP    = HttpContext.GetUserHost();
                app.SaveAsync();

                app.WriteHistory("Authorize", true, model.UserName);

                return(_service.IssueToken(app, set));
            }
            // 刷新令牌
            else if (model.grant_type == "refresh_token")
            {
                var app = _service.DecodeToken(model.refresh_token, set);

                app.WriteHistory("RefreshToken", true, model.refresh_token);

                return(_service.IssueToken(app, set));
            }
            else
            {
                throw new NotSupportedException($"未支持 grant_type={model.grant_type}");
            }
        }
コード例 #2
0
        public async void Token_password()
        {
            var model = new TokenInModel
            {
                grant_type = "password",
                UserName   = "******",
            };

            var client = _server.CreateClient();

            var rs = await client.GetAsync <TokenModel>("oauth/token", model);

            Assert.NotNull(rs);
            Assert.NotEmpty(rs.AccessToken);
            Assert.NotEmpty(rs.RefreshToken);
            Assert.Equal(7200, rs.ExpireIn);
            Assert.Equal("JWT", rs.TokenType);
        }
コード例 #3
0
        public async void Token_refresh_token()
        {
            var client = _server.CreateClient();

            var refresh_token = "";
            {
                var model = new TokenInModel
                {
                    grant_type = "refresh_token",
                    UserName   = "******",
                };

                var rs = await client.GetAsync <TokenModel>("oauth/token", model);

                Assert.NotNull(rs);
                Assert.NotEmpty(rs.RefreshToken);

                refresh_token = rs.RefreshToken;
            }

            // 刷新令牌
            {
                var model2 = new TokenInModel
                {
                    grant_type    = "refresh_token",
                    refresh_token = refresh_token,
                };

                var rs2 = await client.GetAsync <TokenModel>("oauth/token", model2);

                Assert.NotNull(rs2);
                Assert.NotEmpty(rs2.AccessToken);
                Assert.NotEmpty(rs2.RefreshToken);
                Assert.Equal(7200, rs2.ExpireIn);
                Assert.Equal("JWT", rs2.TokenType);
            }
        }