diff --git a/OpenAuth.App/ModuleElementManagerApp.cs b/OpenAuth.App/ModuleElementManagerApp.cs index 9fd4ded1..fd75fa31 100644 --- a/OpenAuth.App/ModuleElementManagerApp.cs +++ b/OpenAuth.App/ModuleElementManagerApp.cs @@ -42,11 +42,11 @@ namespace OpenAuth.App model.CopyTo(newbtn); if (model.Id == 0) { - _repository.Add(model); + _repository.Add(newbtn); } else { - _repository.Update(model); + _repository.Update(newbtn); } } diff --git a/OpenAuth.Mvc/Controllers/BaseController.cs b/OpenAuth.Mvc/Controllers/BaseController.cs index b783fc94..5428ca97 100644 --- a/OpenAuth.Mvc/Controllers/BaseController.cs +++ b/OpenAuth.Mvc/Controllers/BaseController.cs @@ -9,7 +9,11 @@ // // Copyright (c) . All rights reserved. // -// 基础控制器,设置权限 +// +// 基础控制器 +// 继承该控制器可以防止未登录查看 +// 继承该控制器后,如果想访问控制器中存在,但模块配置里面没有的Action(如:Home/Git),请使用AnonymousAttribute +// // *********************************************************************** using Infrastructure.Helper; @@ -35,26 +39,22 @@ namespace OpenAuth.Mvc.Controllers return; } var controllername = Request.RequestContext.RouteData.Values["controller"].ToString().ToLower(); + var actionname = filterContext.ActionDescriptor.ActionName; + var function = this.GetType().GetMethods().FirstOrDefault(u => u.Name == actionname); + if (function == null) + throw new Exception("未能找到Action"); - if (controllername != "home") //主页控制器无需权限控制 + 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) { - var actionname = Request.RequestContext.RouteData.Values["action"].ToString(); - var function = this.GetType().GetMethods().FirstOrDefault(u => u.Name == actionname); - if (function == null) - throw new Exception("未能找到Action"); - - var anonymous = function.GetCustomAttribute(typeof(AnonymousAttribute)); - - var module = loginUser.Modules.FirstOrDefault(u => u.Url.ToLower().Contains(controllername)); - if (module == null && anonymous == null) - { - filterContext.Result = new RedirectResult("/Login/Index"); - return; - } - else - { - ViewBag.Module = module; //为View显示服务,主要是为了显示按钮 - } + filterContext.Result = new RedirectResult("/Login/Index"); + return; + } + else + { + ViewBag.Module = module; //为View显示服务,主要是为了显示按钮 } base.OnActionExecuting(filterContext); diff --git a/OpenAuth.Mvc/Controllers/HomeController.cs b/OpenAuth.Mvc/Controllers/HomeController.cs index d77a8d3c..0a96c225 100644 --- a/OpenAuth.Mvc/Controllers/HomeController.cs +++ b/OpenAuth.Mvc/Controllers/HomeController.cs @@ -3,6 +3,7 @@ using Infrastructure; using Infrastructure.Helper; using OpenAuth.App; using OpenAuth.App.ViewModel; +using OpenAuth.Mvc.Models; namespace OpenAuth.Mvc.Controllers { @@ -14,33 +15,38 @@ namespace OpenAuth.Mvc.Controllers { _app = AutofacExt.GetFromFac(); } - + + [Anonymous] public string GetModules(int parentId = 0) { return JsonHelper.Instance.Serialize(_app.LoadByParent(parentId)); } + + [Anonymous] public ActionResult Index() { var user = SessionHelper.GetSessionUser(); return View(user.Modules); } - + + [Anonymous] public ActionResult Main() { return View(); } - + + [Anonymous] public ActionResult Git() { return View(); } - /// /// 所有页面按钮控制分部视图 /// /// ActionResult. [ChildActionOnly] + [Anonymous] public ActionResult MenuHeader() { return View();