MVC Session记录错误POST登录次数(不针对某个用户)
2012-09-29 12:22
363 查看
Session的IsNewSession可以判断这次请求是否第一次访问, 所以如果是第一次访问而且cookie里包含ASP.NET_SessionId,那么可以判断Session已经过期
因此我们可以写一个如下的一个Filter加在需要判断过期的Action上,当然如果所有Action都需要处理我们可以让所有的Controller集成一个BaseController,在BaseController的OnActionExecuting方法里做, 请参考如下代码
public void OnActionExecuting(ActionExecutingContext filterContext)
{
//以下记录错误登录次数,如果错误登录次数太大,跳转到验证码登录
if (filterContext.HttpContext.Request.FilePath == "/Account/LogOn")
{
HttpContextBase ctx = filterContext.HttpContext;
if (ctx.Session != null)
{
if (ctx.Session.IsNewSession)
{
int logOnErrorTimes = 0;
ctx.Session.Add(ctx.Session.SessionID, logOnErrorTimes);
}
else
{
int logOnErrorTimes = Convert.ToInt32(ctx.Session[ctx.Session.SessionID]) + 1;
ctx.Session.Remove(ctx.Session.SessionID);
ctx.Session.Add(ctx.Session.SessionID, logOnErrorTimes);
ctx.Session.Timeout = 1440;
}
}
}
因此我们可以写一个如下的一个Filter加在需要判断过期的Action上,当然如果所有Action都需要处理我们可以让所有的Controller集成一个BaseController,在BaseController的OnActionExecuting方法里做, 请参考如下代码
public void OnActionExecuting(ActionExecutingContext filterContext)
{
//以下记录错误登录次数,如果错误登录次数太大,跳转到验证码登录
if (filterContext.HttpContext.Request.FilePath == "/Account/LogOn")
{
HttpContextBase ctx = filterContext.HttpContext;
if (ctx.Session != null)
{
if (ctx.Session.IsNewSession)
{
int logOnErrorTimes = 0;
ctx.Session.Add(ctx.Session.SessionID, logOnErrorTimes);
}
else
{
int logOnErrorTimes = Convert.ToInt32(ctx.Session[ctx.Session.SessionID]) + 1;
ctx.Session.Remove(ctx.Session.SessionID);
ctx.Session.Add(ctx.Session.SessionID, logOnErrorTimes);
ctx.Session.Timeout = 1440;
}
}
}
相关文章推荐
- php用户登陆代码(限制用户错误登录次数)(1/2)
- asp.net限制用户登录错误次数
- 不要使用session记录用户尝试登录次数
- JS记录用户登录次数实现代码
- jsp之记录用户登录的总次数以及记录用户最后一次登录的时间
- 取消Oracle用户密码登录错误次数限制
- SQL Server求解连续操作(登录)数量(次数)最大的记录(用户)问题
- JS记录用户登录次数实现代码
- 求连续操作(登录)数量(次数)最大的记录(用户)
- JS记录用户登录次数的代码
- 通过组策略指定Win8用户登录错误次数上限和系统锁定时间
- cas 入门之二十一:用户错误登录次数限制
- Servlet学习(三)——实例:用户登录并记录登陆次数
- Oracle 用户登录错误次数修改
- 用户登录 错误次数 自动解锁
- JS记录用户登录次数
- asp.net限制用户登录错误次数
- 用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联'。错误代码:18452 解决办法
- sde用户下使用sqlplus登录错误ORA-12547: TNS:lost contact
- 用户登录失败,Microsoft sql server 错误:18456