zoukankan      html  css  js  c++  java
  • MVC基类控制器的会话丢失重新登录权限过滤

    SSOController.cs请查看以下代码:

    public class SSOController : Controller
        {
            public const string Token = "Token";
    
            protected override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                var token = "";
    
                //Token by QueryString
                var request = filterContext.HttpContext.Request;
                if (request.QueryString[Token] != null)
                {
                    token = request.QueryString[Token];
                    var cookie = new HttpCookie(Token, token)
                    {
                        Expires = DateTime.Now.AddDays(10)
                    };
                    filterContext.HttpContext.Response.Cookies.Add(cookie);
                }
                else if (request.Cookies[Token] != null)  //从Cookie读取Token
                {
                    token = request.Cookies[Token].Value;
                }
    
                if (string.IsNullOrEmpty(token))
                {
                    //直接登录
                    filterContext.Result = LoginResult("");
                    return;
                }
                else
                {
                    //验证
                    if (AuthUtil.CheckLogin(token, request.RawUrl) == false)
                    {
                        //会话丢失,跳转到登录页面
                        filterContext.Result = LoginResult("");
                        return;
                    }
                }
    
                base.OnActionExecuting(filterContext);
            }
    
            public virtual ActionResult LoginResult(string username)
            {
                return new RedirectResult("/Login/Index");
            }
        }
    

      

    ActionExecutingContext类,已经说明过了,下面我们看看Token是怎么回事:

    我们先分析Token来自于哪里,按照上图分析,Token一部分来自于uri,一部分来自于Cookie客户端信息.
    如果是uri请求的,会重新写入cookie信息,我们再看看这个

    检查Token是不是等于当前的请求request中的url中的Token,如果不是,说明会话丢失。然后下面设置返回结果重新登录。

    
    
    
    
  • 相关阅读:
    8.3.ZooKeeper集群安装配置
    Shiro Demo 示例(SpringMVC-Mybatis-Shiro-redis)
    Shiro 学习
    JavaWeb项目:Shiro实现简单的权限控制(整合SSM)
    权限管理——权限模型和权限控制
    Java程序员面试题集(151-180)
    Java面试题集(136-150)
    Java面试题集(131-135)
    Java面试题集(116-135)
    Java面试题集(1-50)
  • 原文地址:https://www.cnblogs.com/licin/p/6542513.html
Copyright © 2011-2022 走看看