小编use*_*312的帖子

即使用户正在积极使用应用程序,Azure AD Easy Auth 也会过期

我们有一个使用Azure Active Directory“Easy Auth”的单页应用程序(SPA),例如无代码解决方案。当用户第一次打开应用程序时,这似乎工作正常。他们将被重定向到 Microsoft 登录页面,他们可以进行身份​​验证,然后访问应用程序。

然后,由于它是 SPA,用户将四处导航并仅触发 Ajax 请求。大约 24 小时后,当会话 cookie 过期时,问题就会出现。用户可能仍然打开相同的浏览器选项卡,并且不执行整个页面刷新。然后他们可能正在处理一条记录,并且在某个时候他们的下一个 Ajax PUT 请求失败并出现重定向 HTTP 状态,并且他们失去了工作。

所以他们的关键问题是:

我们如何使 SPA Ajax 请求扩展当前用户的会话,以便他们的会话在主动使用应用程序时不会过期?

Azure AD Easy Auth 服务似乎并不“尊重”用户的活动,这使我们相信会话 cookie 永远不会更新。

注意:我们最近使用 /.auth/refresh 端点进行了一些测试,但这也不能解决问题。

azure-active-directory azure-web-app-service

6
推荐指数
1
解决办法
3291
查看次数

作业失败后 Kubernetes pod 消失

我正在通过 cron 运行 Kubernetes 作业。在某些情况下,作业可能会失败,我希望它们重新启动。我正在安排这样的工作:

kubectl run collector-60053 --schedule=30 10 * * * * --image=gcr.io/myimage/collector --restart=OnFailure --command node collector.js

我遇到了一个问题,其中一些作业正在运行并失败,但相关联的 pod 正在消失,所以我无法查看日志并且它们没有重新启动。

例如:

$ kubectl get jobs | grep 60053
collector-60053-1546943400     1         0            1h
$ kubectl get pods -a | grep 60053
$    // nothing returned
Run Code Online (Sandbox Code Playgroud)

这是在运行 1.10.9-gke.5 的 Google Cloud Platform 上

任何帮助将非常感激!

编辑:

我发现了更多信息。我的 GCP 集群上有自动缩放设置。我注意到当服务器被移除时,pods(以及它们的元数据)也会被移除。这是预期的行为吗?不幸的是,这让我无法轻松查看 pod 日志。

我的理论是,当 pod 出现故障时,CrashLoopBackOff 会启动并最终自动缩放决定不再需要该节点(它不会将 pod 视为活动工作负载)。此时,节点消失了,Pod 也消失了。我不认为这是 Restart OnFailure 的预期行为,但我基本上通过密切观察目睹了这一点。

kubernetes google-kubernetes-engine

5
推荐指数
1
解决办法
3895
查看次数

大猩猩/ mux golang缓存静态文件

我有一个Go Web应用程序,该应用程序提供静态HTML / JS / CSS文件以及一些API端点。我注意到我的HTML / JS / CSS没有被缓存在浏览器中。例如,每次我重新加载页面时,它们都会被完全重新下载。

这是我需要设置的服务器端配置更改吗?如何使用Go和Gorilla Mux完成此操作?

我正在使用Google App Engine,因此Nginx是不可能的。

这是我的main.go代码:

package main

import (
    "associations"
    "html/template"
    "net/http"
    "log"
    "io/ioutil"

    "github.com/gorilla/mux"
    "github.com/rs/cors"
    "google.golang.org/appengine"
    "google.golang.org/appengine/mail"
)

var index = template.Must(template.ParseFiles(
    "dist/index.html",
))

func init() {
    r := mux.NewRouter()
    r.HandleFunc("/", homeHandler)  
    r.HandleFunc("/api/{tenant}/certificates", associations.GetCertificate).Methods("GET")
    r.HandleFunc("/api/{tenant}/requests", associations.PostRequest).Methods("POST")

    // handle static files
    r.PathPrefix("/static/").Handler(
        http.StripPrefix("/static/", http.FileServer(http.Dir("dist/static/"))))

    r.NotFoundHandler = http.HandlerFunc(homeHandler) // work around for SPA serving index.html

    handler := cors.Default().Handler(r)
    http.Handle("/", handler)
}
Run Code Online (Sandbox Code Playgroud)

编辑:这是@Topo建议的解决方案:

   // handle static files
        r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", 
CacheControlWrapper(http.FileServer(http.Dir("dist/static/")))))

    ....

func …
Run Code Online (Sandbox Code Playgroud)

go gorilla

2
推荐指数
1
解决办法
1315
查看次数

有东西在 nodejs express 项目中调用 POST /inform

我有一个使用 express 的非常简单的 nodejs 项目。当我在本地启动这个项目时,我注意到有东西每 30 秒调用一次 POST 到 /inform。我想知道什么叫通知以及目的是什么。

我是节点的新手。这是正常的吗?我还没有为这个调用实现路由,所以它会导致 404。

这是我的主要应用程序:

const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const fileUpload = require('express-fileupload');

const app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(fileUpload());

// routes
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward …
Run Code Online (Sandbox Code Playgroud)

node.js express

1
推荐指数
1
解决办法
312
查看次数