我正在使用Identity Server 4系统。我们正在使用MvcHybridAutomaticRefresh示例中的确切代码
问题在于此代码。 AutomaticTokenManagementCookieEvents.cs#L73
trait BaseTest extends FunSuite {
protected def test1(): Unit = test("This is test 1") { ... }
protected def test2(): Unit = test("This is test 1") { ... }
}
class MainTest1 extends BaseTest {
// Arrange these is any order you see fit
test3()
test2()
test1()
protected def test3(): Unit = test("This is a test specific to MainTest1") { ... }
}
class MainTest2 extends BaseTest {
// Arrange these is any order you see fit
test2()
test3()
test1()
protected def test3(): Unit = test("This is a test specific to MainTest2") { ... }
}
当前,如果管理员撤消了刷新令牌,或者刷新令牌已过期(我们未启用滑动刷新令牌),则应用程序将崩溃。我希望它会将用户重新路由到登录屏幕。
我在此示例中缺少一些无法解决的问题吗?
我也已将其作为问题发布在问题论坛#3599
上是在检测错误的位置添加以下内容
var response = await _service.RefreshTokenAsync(refreshToken.Value);
if (response.IsError)
{
_logger.LogWarning("Error refreshing token: {error}", response.Error);
return;
}
我曾希望将用户注销。这只是挂,永远不会去任何地方。它甚至没有使您退出服务器。
我目前只能找到远程工作的唯一方法是在api调用中添加一个catch。这并不理想,因为在我们的实际应用程序中,我们有很多api调用,这意味着需要对我们的应用程序进行大量更改。是否有办法直接从中间穿戴本身强制登录?
await context.HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
答案 0 :(得分:1)
您可以仅添加一行以强制中间件再次执行挑战:
if (response.IsError)
{
_logger.LogWarning("Error refreshing token: {error}", response.Error);
context.RejectPrincipal();
return;
}