ajax结果中的登录界面 - Asp.net Mvc

Mor*_*rph 5 asp.net-mvc jquery

当您使用asp.net会员资格并且您在控制器/操作上有[授权]标签时,有时当您从喝咖啡/散步时回来时,您已经退出网站.当您单击调用Ajax调用的按钮或链接时,返回的html不是您请求的,而是登录屏幕,然后在页面的某处呈现(如果您使用$("占位符").html(结果)) .

无论如何在jQuery中检测到这个?因为它是合法的HTML,你没有得到错误,但它不是你想要发生的事情.

tva*_*son 6

您可以做的一件事是客户端会话超时检测.设置一个计时器,该计时器将在您的实际会话到期前不久到期.让计时器弹出一个对话框,指示会话即将到期并让用户有机会更新它(发送回AJAX请求以刷新会话计时器).对话框上有另一个计时器,它将在实际会话剩余时间到期之前到期.如果此计时器触发,则将页面的href重置为注销URL并将用户注销.显然,定时器需要通过页面上的用户活动重置 - ajax请求等.


Dyl*_*tie 6

tvanfosson的客户端会话超时方法非常好用,实际上 - 我在午餐后回到的几个网站给我留下了深刻印象,发现他们已经自动重定向回登录页面.

另一种方法可以如下:

您向(例如)/帐户/详细信息发送Ajax请求,但您的登录cookie已过期,因此您不能看到它; 控制器返回/安全/登录.

如果您的控制器返回登录视图而不是请求的页面,您是否考虑将响应代码设置为401未授权而不是200 OK

然后,您需要修改Ajax回调以检查Ajax响应的状态代码,如果它是401 Not authorized,您可以相应地做出响应 - 重定向到登录页面,显示弹出式登录框,或者只是错误消息"抱歉,您需要再次登录"