OpenAuth.Net/OpenAuth.Mvc/Controllers/BaseController.cs

71 lines
2.7 KiB
C#
Raw Normal View History

// ***********************************************************************
2015-09-22 23:10:00 +08:00
// Assembly : OpenAuth.Mvc
2016-07-19 11:44:48 +08:00
// Author : yubaolee
// Created : 07-11-2016
2015-09-22 23:10:00 +08:00
//
2016-07-19 11:44:48 +08:00
// Last Modified By : yubaolee
// Last Modified On : 07-19-2016
// Contact : www.cnblogs.com/yubaolee
// File: BaseController.cs
2015-09-22 23:10:00 +08:00
// ***********************************************************************
2016-07-19 11:44:48 +08:00
2015-09-23 00:10:11 +08:00
using OpenAuth.Mvc.Models;
using System;
using System.Configuration;
2015-12-04 00:14:55 +08:00
using System.Linq;
using System.Reflection;
using System.Web;
2015-12-02 10:06:30 +08:00
using System.Web.Mvc;
2016-07-08 18:51:48 +08:00
using OpenAuth.App.SSO;
2015-09-22 23:10:00 +08:00
namespace OpenAuth.Mvc.Controllers
{
2016-07-19 11:44:48 +08:00
/// <summary>
/// 基础控制器
/// <para>用于控制登录用户是否有权限访问指定的Action</para>
/// <para>李玉宝新增于2016-07-19 11:12:09</para>
/// </summary>
2016-07-08 18:51:48 +08:00
public class BaseController : SSOController
2015-12-02 10:06:30 +08:00
{
2015-11-08 23:19:04 +08:00
protected BjuiResponse BjuiResponse = new BjuiResponse();
2015-12-02 10:06:30 +08:00
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
2016-07-08 18:51:48 +08:00
base.OnActionExecuting(filterContext);
2016-07-19 11:44:48 +08:00
if (!AuthUtil.CheckLogin()) return;
var controllername = Request.RequestContext.RouteData.Values["controller"].ToString().ToLower();
2016-01-17 11:29:46 +08:00
var actionname = filterContext.ActionDescriptor.ActionName.ToLower();
var function = this.GetType().GetMethods().FirstOrDefault(u => u.Name.ToLower() == actionname);
if (function == null)
throw new Exception("未能找到Action");
2015-12-02 10:06:30 +08:00
var authorize = function.GetCustomAttribute(typeof(AuthenticateAttribute));
2016-07-19 11:44:48 +08:00
var module = AuthUtil.GetCurrentUser().Modules.FirstOrDefault(u => u.Url.ToLower().Contains(controllername));
//当前登录用户没有Action记录&&Action有authenticate标识
if (authorize != null && module == null)
2015-12-02 10:06:30 +08:00
{
filterContext.Result = new RedirectResult("/Login/Index");
return;
}
else
{
ViewBag.Module = module; //为View显示服务主要是为了显示按钮
2015-12-01 17:30:24 +08:00
}
var version = ConfigurationManager.AppSettings["version"];
if (version == "demo")
{
HttpPostAttribute hobbyAttr = (HttpPostAttribute)Attribute.GetCustomAttribute(function, typeof(HttpPostAttribute));
if (actionname.Contains("del") || hobbyAttr != null) //客户端提交数据
{
throw new HttpException(400, "演示版本,不能进行该操作,当前模块:" + controllername +"/" +actionname);
}
}
2015-12-02 10:06:30 +08:00
}
}
2015-09-22 23:10:00 +08:00
}