// *********************************************************************** // Assembly : OpenAuth.WebApi // Author : yubaolee // Created : 07-11-2016 // // Last Modified By : yubaolee // Last Modified On : 07-11-2016 // Contact : // File: CheckController.cs // *********************************************************************** using System; using System.Data.Entity.Core; using System.Web.Http; using Infrastructure; using Infrastructure.Cache; using OpenAuth.App; using OpenAuth.App.SSO; using OpenAuth.App.Response; namespace OpenAuth.WebApi.Areas.SSO.Controllers { /// /// sso验证 /// 其他站点通过后台Post来认证 /// 或使用静态类OpenAuth.App.SSO.AuthUtil访问 /// public class CheckController : ApiController { public AuthorizeApp _app { get; set; } private ObjCacheProvider _objCacheProvider = new ObjCacheProvider(); /// /// 检验token是否有效 /// /// The token. /// 备用参数. [System.Web.Mvc.HttpGet] public Response GetStatus(string token, string requestid = "") { var result = new Response(); try { result.Result = _objCacheProvider.GetCache(token) != null; } catch (Exception ex) { result.Code = 500; result.Message = ex.Message; } return result; } /// /// 根据token获取用户及用户可访问的所有资源 /// /// /// 备用参数. [System.Web.Mvc.HttpGet] public Response GetUser(string token, string requestid = "") { var result = new Response(); try { var user = _objCacheProvider.GetCache(token); if (user != null) { result.Result = _app.GetAccessedControls(user.Account); } } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException != null ? "OpenAuth.WebAPI数据库访问失败:" + ex.InnerException.Message : "OpenAuth.WebAPI数据库访问失败:" + ex.Message; } return result; } /// /// 根据token获取用户名称 /// /// /// 备用参数. [System.Web.Mvc.HttpGet] public Response GetUserName(string token, string requestid = "") { var result = new Response(); try { var user = _objCacheProvider.GetCache(token); if (user != null) { result.Result = user.Account; } } catch (Exception ex) { result.Code = 500; result.Message = ex.Message; } return result; } /// /// 登录接口 /// /// 登录参数 /// [System.Web.Mvc.HttpPost] public LoginResult Login(PassportLoginRequest request) { var result = new LoginResult(); try { result = SSOAuthUtil.Parse(request); } catch (Exception ex) { result.Code = 500; result.Message = ex.Message; } return result; } /// /// 注销登录 /// /// /// 备用参数. [System.Web.Mvc.HttpPost] public bool Logout(string token, string requestid = "") { try { _objCacheProvider.Remove(token); return true; } catch (Exception) { return false; } } } }