场景是用户应该在她的会话即将到期时收到通知(例如通过典型的JS警报或重定向等).可以做的几种方法是
这两种方法的相对优点/缺点是什么?除了这些,还有其他方法可以实现(一些标准库等).我的后端是Java EE(Struts + Spring).
我正在开发一个C#MVC应用程序,我似乎无法获得身份验证和会话超时来同步.我有一个基本的表单身份验证设置和一些有限的会话值.我将身份验证超时设置为小于会话(28分钟对30),但是对开发Web服务器运行时,会在重新启动服务器时擦除会话,但身份验证仍然存在.我假设认证存储在一个cookie中,显然可以在服务器重启后继续存在.
<authentication mode="Forms" >
<forms loginUrl="~/Account/Login" timeout="28" />
</authentication>
<sessionState timeout="30" />
Run Code Online (Sandbox Code Playgroud)
我想如果Session为null,我想强制认证超时,然后强制登录.
那是我真正想做的吗?如果是这样,我该怎么做?
如果没有,处理这个问题的正确方法是什么?
编辑
对于更多的观点,我也为同一个项目发布了这个问题:登录为......最佳实践?
如果用户不采取任何措施,我需要在13分钟不活动后显示超时警告模式,并在15分钟后结束会话.我需要使用reactjs来实现这一点.我在https://www.npmjs.com/package/react-timeout#react-classic-verbose检查了react-timeout ,但这没有帮助.如果有人知道如何做到这一点,请与我分享.
Gunicorn允许为请求配置超时,如下面的文档中所示.这似乎是整个应用程序的全局配置.
是否可以为不同的端点配置不同的超时?也许覆盖已知需要很长时间的url端点上的默认超时?
http://docs.gunicorn.org/en/stable/settings.html#timeout
超时
-t INT, - timeout INT
三十
沉默超过这么多秒钟的工人被杀死并重新开始.
一般设定为30秒.如果您确定同步工作人员的影响,请将其设置得明显更高.对于非同步工作者,它只意味着工作进程仍在进行通信,并且与处理单个请求所需的时间长度无关.
在我的网络应用程序中,我正在使用一些会话变量,这些变量在我登录时设置:
例如 Session("user_id") = reader("user_id")
我通过我的应用程序使用它.
当会话变量超时时,主要在连接到数据库时会抛出错误,这session("user_id")是某些查询所需的.
如何设置会话变量,以便一旦超时到达登录页面,或者至少可以增加可用时间长度?
我正在为我的ASP.NET 3.5 MVC 2项目编写一个Session过期的逻辑片段来注销用户并将它们重定向到AccountController LogOn操作.
我对所有关心会话状态的操作都有以下属性,这段代码适用于IE 8,但不适用于Firefox 4或Google Chrome 10.症状是当我尝试导航到由操作表示的视图时我的[SessionExpireFilter]属性,下面代码中的ctx.Session.IsNewSession属性每次都评估为"true",即使我在30分钟的会话中只有几秒钟.
public class SessionExpireFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;
// check if session is supported
if (ctx.Session != null && ctx.Session.IsNewSession)
{
// If it says it is a new session, but an existing cookie exists, then it must
// have timed out
string sessionCookie = ctx.Request.Headers["Cookie"];
if ((null != sessionCookie) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0))
{
FormsAuthentication.SignOut();
ctx.Response.Redirect("~/Account/LogOn");
}
}
base.OnActionExecuting(filterContext);
}
} …Run Code Online (Sandbox Code Playgroud) 我最近使用Nortel客户端连接到VPN.
The problem that i faced, I borrowed RSA from somebody connected to VPN , had to leave pc idle for 30min or so and VPN timed out. So i had to wake people up and ask for keys to connect.
So I was wondering if its possible to write a script (I am familiar with Batch and javaScript ) that do not let the connection timeout? What I could think of : keep on sending inputs after a time …
我的独立应用程序使用Shiro进行安全管理.我遇到了过期会话的问题.如果用户会话过期,当我尝试将用户重新登录时,我会收到以下异常.有人可以帮忙吗?
org.apache.shiro.session.UnknownSessionException: There is no session with id [d32af383-5f26-463f-a2f0-58a0e82c7890] at org.apache.shiro.session.mgt.eis.AbstractSessionDAO.readSession(AbstractSessionDAO.java:170) at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSessionFromDataSource(DefaultSessionManager.java:236) at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSession(DefaultSessionManager.java:222) at org.apache.shiro.session.mgt.AbstractValidatingSessionManager.doGetSession(AbstractValidatingSessionManager.java:118) at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupSession(AbstractNativeSessionManager.java:105) at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupRequiredSession(AbstractNativeSessionManager.java:109) at org.apache.shiro.session.mgt.AbstractNativeSessionManager.stop(AbstractNativeSessionManager.java:238) at org.apache.shiro.session.mgt.DelegatingSession.stop(DelegatingSession.java:127) at org.apache.shiro.session.ProxiedSession.stop(ProxiedSession.java:107) at org.apache.shiro.subject.support.DelegatingSubject$StoppingAwareProxiedSession.stop(DelegatingSubject.java:419) at org.apache.shiro.session.ProxiedSession.stop(ProxiedSession.java:107) at org.apache.shiro.subject.support.DelegatingSubject$StoppingAwareProxiedSession.stop(DelegatingSubject.java:419)
我用spring配置shiro
<bean id="securityManager" class="org.apache.shiro.mgt.DefaultSecurityManager">
<property name="realm" ref="myRealm"/>
<property name="sessionManager.globalSessionTimeout" value="3600000" />
</bean>
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod" value="org.apache.shiro.SecurityUtils.setSecurityManager"/>
<property name="arguments" ref="securityManager"/>
</bean>
Run Code Online (Sandbox Code Playgroud) 我有一个rails 4应用程序,我正在使用设计进行身份验证,它工作得很好.我唯一的问题是,在我将其部署到服务器上并且用户必须再次登录后,它会丢失用户的会话.
如果我只是重新启动nginx/passenger(我用于我的应用程序),它就不会丢失它.当我部署我的应用程序时,我正在失去它.对于部署,我也会自动清除所有数据库,我的部署脚本运行种子文件,它也会生成用户.
我们目前正在开发应用程序,所以这种行为现在是可以接受的,但是将来当应用程序准备就绪时,我们不会这样做(当然!).
那么这是一个问题,因为重新播种还是我应该检查别的东西?我看到每次运行wipe out/seed操作时加密的密码都会改变,这是否与丢失用户会话有关?
我正在尝试使用WSO IS 5.1.0配置会话超时.
我有一个服务提供商,其会话时间为10分钟.
我已经配置了SSO sesison timeot在WSO210分钟使用枭雄控制台上的居民身份提供部分.
我不知道为什么,但全局配置(<IS_HOME>/repository/conf/identity/identity.xml file under the <TimeConfig> element)不起作用.
在本地会话超时后,用户被重定向到SSO登录页面,因此似乎全局会话无效.但是,如果您在浏览器中再次键入应用程序URL,则会将用户重定向到登录页面,自动重新进行身份验证,并重定向到上次访问的页面.为什么第一次用户进入SSO登录页面,之后 - 不是?预期的行为是在全局会话到期后不应重新验证用户.
因此,场景是:
- 用户进入服务提供商的主页并被重定向到SSO登录页面
- 用户登录SSO登录页面
- 经过一段时间SSO会话到期;
- 服务提供商的会话也会过期 - 用户进入某个服务提供商的页面并被重定向到SSO登录页面(此时似乎以某种方式重新创建了SSO会话)
- 用户再次尝试转到服务提供商的页面,他神奇地reathenticated(因为会话被重新创建).
如果你至少评论这个流程我会很感激,我现在肯定我是否理解它是如何工作的
session-timeout ×10
asp.net-mvc ×2
asp.net ×1
c# ×1
devise ×1
firefox ×1
gunicorn ×1
java ×1
javascript ×1
python ×1
react-modal ×1
reactjs ×1
rest ×1
session ×1
shiro ×1
spring-saml ×1
timeout ×1
vpn ×1
wso2 ×1
wso2is ×1