2016-07-08 18:51:48 +08:00
|
|
|
|
// ***********************************************************************
|
|
|
|
|
// Assembly : OpenAuth.Mvc
|
|
|
|
|
// Author : Administrator
|
|
|
|
|
// Created : 09-22-2015
|
|
|
|
|
//
|
|
|
|
|
// Last Modified By : Administrator
|
|
|
|
|
// Last Modified On : 09-22-2015
|
|
|
|
|
// ***********************************************************************
|
|
|
|
|
// <copyright file="BaseController.cs" company="">
|
|
|
|
|
// Copyright (c) . All rights reserved.
|
|
|
|
|
// </copyright>
|
|
|
|
|
// <summary>
|
|
|
|
|
// 基础控制器
|
|
|
|
|
// 继承该控制器可以防止未登录查看
|
|
|
|
|
// 继承该控制器后,如果想访问控制器中存在,但模块配置里面没有的Action(如:Home/Git),请使用AnonymousAttribute
|
|
|
|
|
// </summary>
|
|
|
|
|
// ***********************************************************************
|
|
|
|
|
|
2016-08-30 20:02:08 +08:00
|
|
|
|
using System;
|
2016-07-08 18:51:48 +08:00
|
|
|
|
using System.Web;
|
|
|
|
|
using System.Web.Mvc;
|
|
|
|
|
|
|
|
|
|
namespace OpenAuth.App.SSO
|
|
|
|
|
{
|
|
|
|
|
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];
|
2016-08-30 20:02:08 +08:00
|
|
|
|
var cookie = new HttpCookie(Token, token)
|
|
|
|
|
{
|
2016-12-27 11:25:51 +08:00
|
|
|
|
Expires = DateTime.Now.AddDays(10)
|
2016-08-30 20:02:08 +08:00
|
|
|
|
};
|
|
|
|
|
filterContext.HttpContext.Response.Cookies.Add(cookie);
|
2016-07-08 18:51:48 +08:00
|
|
|
|
}
|
|
|
|
|
else if (request.Cookies[Token] != null) //从Cookie读取Token
|
|
|
|
|
{
|
|
|
|
|
token = request.Cookies[Token].Value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(token))
|
|
|
|
|
{
|
|
|
|
|
//直接登录
|
2016-11-17 19:48:12 +08:00
|
|
|
|
filterContext.Result = LoginResult("");
|
2016-07-19 11:44:48 +08:00
|
|
|
|
return;
|
2016-07-08 18:51:48 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//验证
|
|
|
|
|
if (AuthUtil.CheckLogin(token, request.RawUrl) == false)
|
|
|
|
|
{
|
|
|
|
|
//会话丢失,跳转到登录页面
|
2016-11-17 19:48:12 +08:00
|
|
|
|
filterContext.Result = LoginResult("");
|
2016-07-19 11:44:48 +08:00
|
|
|
|
return;
|
2016-07-08 18:51:48 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
base.OnActionExecuting(filterContext);
|
|
|
|
|
}
|
|
|
|
|
|
2016-11-17 19:48:12 +08:00
|
|
|
|
public virtual ActionResult LoginResult(string username)
|
2016-07-08 18:51:48 +08:00
|
|
|
|
{
|
|
|
|
|
return new RedirectResult("/Login/Index");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|