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

66 lines
2.5 KiB
C#
Raw Normal View History

// ***********************************************************************
2015-09-22 23:10:00 +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>
// 基础控制器
// 继承该控制器可以防止未登录查看
// 继承该控制器后如果想访问控制器中存在但模块配置里面没有的ActionHome/Git请使用AnonymousAttribute
// </summary>
2015-09-22 23:10:00 +08:00
// ***********************************************************************
using Infrastructure.Helper;
2015-12-01 17:30:24 +08:00
using OpenAuth.App.ViewModel;
2015-09-23 00:10:11 +08:00
using OpenAuth.Mvc.Models;
using System;
2016-01-17 11:29:46 +08:00
using System.Diagnostics;
2015-12-04 00:14:55 +08:00
using System.Linq;
using System.Reflection;
2015-12-02 10:06:30 +08:00
using System.Web.Mvc;
using OpenAuth.App;
2015-09-22 23:10:00 +08:00
namespace OpenAuth.Mvc.Controllers
{
2015-12-02 10:06:30 +08:00
public class BaseController : Controller
{
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)
{
var loginUser = AutofacExt.GetFromFac<LoginApp>().GetLoginUser();
if (!User.Identity.IsAuthenticated)
2015-12-01 17:30:24 +08:00
{
2015-12-02 16:28:01 +08:00
filterContext.Result = new RedirectResult("/Login/Index");
2015-12-02 10:06:30 +08:00
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 anonymous = function.GetCustomAttribute(typeof(AnonymousAttribute));
var module = loginUser.Modules.FirstOrDefault(u => u.Url.ToLower().Contains(controllername));
//当前登录用户没有Action记录&&Action没有anonymous标识
if (module == null && anonymous == 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
}
2015-12-02 10:06:30 +08:00
base.OnActionExecuting(filterContext);
}
}
2015-09-22 23:10:00 +08:00
}