Client:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
namespace SiteA.Controllers
{
public class Info
{
public string UserName { get; set; }
public string Passward { get; set; }
}
public class ControllerBasic : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (Session["Info"] != null)
{
// 拿seesion中的token 验证登录状态,如果已经登录,直接返回
// Do: 调用sso 的webservice
var url = Request.Url.AbsoluteUri;
//filterContext.Result = new RedirectResult(url.Contains("?") ? url.Substring(0, url.LastIndexOf("?")) : url); ;
//Response.Redirect(url.Contains("?")?url.Substring(0,url.LastIndexOf("?")):url);
// 如果验证成功
return;
// 验证失败
// Response.Redirect($"https://localhost:44325/home/Login?backUrl=" + $"{ System.Web.HttpUtility.UrlEncode(Request.Url.AbsoluteUri)}");
}
if (Request["token"] != null)
{
var token = Request["Token"];
// 去主站获取凭证
Info Info = new Info { UserName="hnzheng",Passward="123"}; // 包含用户名、姓名、过期时间等
if (Info == null)
{
// 跳转到单点登录页面
Response.Redirect($"https://localhost:44325/home/Login?backUrl=" + $"{ System.Web.HttpUtility.UrlEncode(Request.Url.AbsoluteUri)}");
}
else
{
// 保存凭证
Session["Info"] = new
{
UserName = Info.UserName,
Passward = Info.Passward,
Token = token
// 等等其他信息
};
}
}
else
{
Response.Redirect( $"https://localhost:44325/home/Login?backUrl=" + $"{ System.Web.HttpUtility.UrlEncode(Request.Url.AbsoluteUri)}");
}
}
}
}
SSo:
public ActionResult Login() { var userName = Request.Form["UserName"]; var passard = Request.Form["Paassward"]; var returnUrl = Request.Url.AbsoluteUri; //Do:验证用户名和密码 // 模拟验证 if (userName == "hnzheng" && passard == "123") { var token = GetToken(); // 保存用户名和密码,可用其他方式替代 { System.Runtime.Caching.MemoryCache memeryCache = MemoryCache.Default; CacheItemPolicy cacheItemPolicy = new CacheItemPolicy(); cacheItemPolicy.AbsoluteExpiration = DateTime.Now.AddDays(1); // Session["UserInfo"]=$"{userName}|{passard}"; memeryCache.Add(new CacheItem(token, "hnzheng|123"), cacheItemPolicy); } // 跳转到主站的首页 { // 解析url string url = Request.Url.AbsoluteUri; if (!string.IsNullOrEmpty(url)) { GoForward(url,token); } } RedirectToAction("Home", "index"); } else ViewBag.Message = "用户名或密码不正确!"; return View(); }