优化api异常提示;

优化授权菜单加载逻辑
This commit is contained in:
yubaolee 2018-04-04 11:59:18 +08:00
parent a631e15d7e
commit 7989b4e563
24 changed files with 174 additions and 108 deletions

Binary file not shown.

View File

@ -50,7 +50,12 @@ namespace OpenAuth.App.SSO
try
{
var value = _helper.Get(null, requestUri);
return Boolean.Parse(value);
var result = JsonHelper.Instance.Deserialize<Response<bool>>(value);
if (result.Code == 200)
{
return result.Result;
}
throw new Exception(result.Message);
}
catch (Exception ex)
{
@ -81,8 +86,13 @@ namespace OpenAuth.App.SSO
try
{
var value = _helper.Get<UserWithAccessedCtrls>(null, requestUri);
return value;
var value = _helper.Get(null, requestUri);
var result = JsonHelper.Instance.Deserialize<Response<UserWithAccessedCtrls>>(value);
if (result.Code == 200)
{
return result.Result;
}
throw new Exception(result.Message);
}
catch (Exception ex)
{
@ -103,8 +113,13 @@ namespace OpenAuth.App.SSO
try
{
var value = _helper.Get<string>(null, requestUri);
return value;
var value = _helper.Get(null, requestUri);
var result = JsonHelper.Instance.Deserialize<Response<string>>(value);
if (result.Code == 200)
{
return result.Result;
}
throw new Exception(result.Message);
}
catch (Exception ex)
{

View File

@ -23,29 +23,6 @@ namespace OpenAuth.Mvc.Controllers
return View();
}
/// <summary>
/// 所有页面按钮控制分部视图
/// </summary>
/// <returns>ActionResult.</returns>
[ChildActionOnly]
public ActionResult MenuHeader()
{
var sb = new StringBuilder();
foreach (var element in CurrentModule.Elements)
{
sb.Append("<button "
+ " data-type='" + element.DomId + "' "
+ " class='layui-btn layui-btn-small " + element.Class + "' "
+ element.Attr
+ ">");
if (!string.IsNullOrEmpty(element.Icon))
{
sb.Append("<i class='layui-icon'>" + element.Icon + "</i>");
}
sb.Append(element.Name + "</button>");
}
ViewBag.Buttons = sb.ToString();
return View();
}
}
}

View File

@ -70,6 +70,13 @@ namespace OpenAuth.Mvc.Controllers
return JsonHelper.Instance.Serialize(menus);
}
public string LoadAuthorizedMenus()
{
return JsonHelper.Instance.Serialize(CurrentModule.Elements);
}
#region
//添加模块

View File

@ -623,7 +623,6 @@
<Content Include="Views\Shared\_FlowForm.cshtml" />
<Content Include="Views\Home\Main.cshtml" />
<Content Include="Views\Shared\_Layout.cshtml" />
<Content Include="Views\Home\MenuHeader.cshtml" />
<Content Include="Views\Categories\Index.cshtml" />
<Content Include="Views\ModuleManager\Assign.cshtml" />
<Content Include="Views\RoleManager\Index.cshtml" />

View File

@ -2,8 +2,7 @@
{
<link rel="stylesheet" href="/css/treetable.css" />
}
<blockquote class="layui-elem-quote news_search toolList">
@Html.Action("MenuHeader", "Home")
<blockquote class="layui-elem-quote news_search toolList" id="menus">
</blockquote>
<div style="display: flex;">

View File

@ -2,8 +2,7 @@
{
<link rel="stylesheet" href="/css/treetable.css" />
}
<blockquote class="layui-elem-quote news_search toolList">
@Html.Action("MenuHeader", "Home")
<blockquote class="layui-elem-quote news_search toolList" id="menus">
</blockquote>
<div class="layui-row">

View File

@ -2,8 +2,7 @@
{
<link rel="stylesheet" href="/css/treetable.css" />
}
<blockquote class="layui-elem-quote news_search toolList">
@Html.Action("MenuHeader", "Home")
<blockquote class="layui-elem-quote news_search toolList" id="menus">
</blockquote>

View File

@ -1,8 +0,0 @@

@{
Layout = null;
}
@Html.Raw(ViewBag.Buttons)

View File

@ -2,8 +2,7 @@
{
<link rel="stylesheet" href="/css/treetable.css" />
}
<blockquote class="layui-elem-quote news_search toolList">
@Html.Action("MenuHeader", "Home")
<blockquote class="layui-elem-quote news_search toolList" id="menus">
</blockquote>
<div style="display: flex;">
@ -69,7 +68,7 @@
<!--模块添加/编辑窗口-->
<div id="divEdit" style="display: none">
<form class="layui-form" action="" id="formEdit">
<form class="layui-form layui-form-pane" action="" id="formEdit">
<input type="hidden" name="Id" v-model="Id" />

View File

@ -2,8 +2,7 @@
{
<link rel="stylesheet" href="/css/treetable.css" />
}
<blockquote class="layui-elem-quote news_search toolList">
@Html.Action("MenuHeader", "Home")
<blockquote class="layui-elem-quote news_search toolList" id ="menus">
</blockquote>
<div class="layui-row">
@ -38,7 +37,7 @@
<!--用户添加/编辑窗口-->
<div id="divEdit" style="display: none">
<form class="layui-form" action="" id="formEdit">
<form class="layui-form layui-form-pane" action="" id="formEdit">
<input type="hidden" name="Id" v-model="Id" />

View File

@ -2,8 +2,7 @@
{
<link rel="stylesheet" href="/css/treetable.css" />
}
<blockquote class="layui-elem-quote news_search toolList">
@Html.Action("MenuHeader", "Home")
<blockquote class="layui-elem-quote news_search toolList" id ="menus">
</blockquote>
<div class="layui-row">
@ -33,7 +32,7 @@
<!--角色添加/编辑窗口-->
<div id="divEdit" style="display: none">
<form class="layui-form" action="" id="formEdit">
<form class="layui-form layui-form-pane" action="" id="formEdit">
<input type="hidden" name="Id" v-model="Id" />
@ -55,7 +54,7 @@
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-item" pane>
<label class="layui-form-label">是否可用</label>
<div class="layui-input-block">
<input type="checkbox" name="Status" v-model="Status" lay-skin="switch" value="1">

View File

@ -2,8 +2,7 @@
{
<link rel="stylesheet" href="/css/treetable.css" />
}
<blockquote class="layui-elem-quote news_search toolList">
@Html.Action("MenuHeader", "Home")
<blockquote class="layui-elem-quote news_search toolList" id="menus">
</blockquote>
<div class="layui-row">

View File

@ -3,25 +3,56 @@ layui.define("jquery", function (exports) {
var jQuery = layui.jquery,
$ = layui.jquery;
//获取url的参数值
$.getUrlParam = function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
//获取url的参数值
$.getUrlParam = function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
//把name/value的数组转为obj对象
$.arrayToObj = function(array) {
var result = {};
for (var i = 0; i < array.length; i++) {
var field = array[i];
if (field.name in result) {
result[field.name] += ',' + field.value;
} else {
result[field.name] = field.value;
}
//把name/value的数组转为obj对象
$.arrayToObj = function (array) {
var result = {};
for (var i = 0; i < array.length; i++) {
var field = array[i];
if (field.name in result) {
result[field.name] += ',' + field.value;
} else {
result[field.name] = field.value;
}
return result;
}
return result;
}
//加载菜单
$.fn.extend({
loadMenus: function () {
var dom = $(this);
$.ajax("/ModuleManager/LoadAuthorizedMenus",
{
async: false
, success: function (data) {
var obj = JSON.parse(data);
var sb = '';
$.each(obj,
function () {
var element = this;
sb += ("<button " + " data-type='" + element.DomId +
"' " + " class='layui-btn layui-btn-small " + element.Class +
"' " + element.Attr + ">");
if (element.Icon != null && element.Icon != '') {
sb += ("<i class='layui-icon'>" + element.Icon + "</i>");
}
sb += (element.Name + "</button>");
});
dom.html(sb);
}
});
}
});
exports('utils');
});

View File

@ -1,12 +1,14 @@
layui.config({
base: "/js/"
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth'], function () {
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth','utils'], function () {
var form = layui.form,
layer = layui.layer,
$ = layui.jquery;
var table = layui.table;
var openauth = layui.openauth;
layui.droptree("/Categories/AllTypes", "#TypeName", "#TypeId", false);
$("#menus").loadMenus();
//主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id

View File

@ -1,6 +1,6 @@
layui.config({
base: "/js/"
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth'], function () {
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth','utils'], function () {
var form = layui.form,
layer = (top == undefined || top.layer === undefined )? layui.layer : top.layer,
$ = layui.jquery;
@ -8,6 +8,8 @@
var openauth = layui.openauth;
var thiswin = (top == undefined) ? window : top.window;
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus();
//主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id
@ -70,7 +72,7 @@
layer.open({
type: 2,
area: ['750px', '550px'], //宽高
area: ['800px', '700px'], //宽高
maxmin: true, //开启最大化最小化按钮
title: title,
content: '/flowInstances/edit?id=' + data.Id,

View File

@ -169,6 +169,7 @@ layui.config({
return false; //阻止表单跳转。
});
flowDesignPanel.reinitSize($(window).width() - 30, $(window).height() - 100);
$(window).resize(function () {
flowDesignPanel.reinitSize($(window).width() - 30, $(window).height() - 100);
});

View File

@ -1,6 +1,6 @@
layui.config({
base: "/js/"
}).use(['form', 'vue', 'ztree', 'layer', 'jquery', 'table', 'droptree', 'openauth'], function () {
}).use(['form', 'vue', 'ztree', 'layer', 'jquery', 'table', 'droptree', 'openauth','utils'], function () {
var form = layui.form, element = layui.element,
layer = (top == undefined || top.layer === undefined )? layui.layer : top.layer,
$ = layui.jquery;
@ -10,6 +10,8 @@
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus();
//主列表加载,可反复调用进行刷新
var config = {}; //table的参数如搜索key点击tree的id
var mainList = function (options) {
@ -71,7 +73,7 @@
layer.open({
type: 2,
area: ['600px', '500px'], //宽高
area: ['800px', '700px'], //宽高
maxmin: true, //开启最大化最小化按钮
title: title,
content: '/flowschemes/design?id='+data.Id,

View File

@ -1,6 +1,6 @@
layui.config({
base: "/js/"
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth'], function () {
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth','utils'], function () {
var form = layui.form,
element = layui.element,
layer = (top == undefined || top.layer === undefined )? layui.layer : top.layer,
@ -12,7 +12,7 @@
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus();
//主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id
var mainList = function (options) {

View File

@ -1,6 +1,6 @@
layui.config({
base: "/js/"
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth'], function () {
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth','utils'], function () {
var form = layui.form,
layer = layui.layer,
$ = layui.jquery;
@ -8,6 +8,8 @@ layui.config({
var openauth = layui.openauth;
layui.droptree("/UserSession/QueryModuleList", "#ParentName", "#ParentId", false);
$("#menus").loadMenus();
//主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id
var mainList = function (options) {

View File

@ -1,12 +1,14 @@
layui.config({
base: "/js/"
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth'], function () {
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth','utils'], function () {
var form = layui.form,
layer = layui.layer,
$ = layui.jquery;
var table = layui.table;
var openauth = layui.openauth;
layui.droptree("/UserSession/GetOrgs", "#ParentName", "#ParentId", false);
$("#menus").loadMenus();
//主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id

View File

@ -1,6 +1,6 @@
layui.config({
base: "/js/"
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth'], function () {
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth','utils'], function () {
var form = layui.form,
layer = layui.layer,
$ = layui.jquery;
@ -8,6 +8,8 @@ layui.config({
var openauth = layui.openauth;
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus();
//主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id
var mainList = function (options) {

View File

@ -1,6 +1,6 @@
layui.config({
base: "/js/"
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth'], function () {
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth','utils'], function () {
var form = layui.form,
layer = layui.layer,
$ = layui.jquery;
@ -8,6 +8,8 @@ layui.config({
var openauth = layui.openauth;
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus();
//主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id
var mainList = function (options) {

View File

@ -11,6 +11,7 @@
using System;
using System.Web.Http;
using Infrastructure;
using Infrastructure.Cache;
using OpenAuth.App;
using OpenAuth.App.SSO;
@ -28,20 +29,26 @@ namespace OpenAuth.WebApi.Areas.SSO.Controllers
public AuthorizeApp _app { get; set; }
private ObjCacheProvider<UserAuthSession> _objCacheProvider = new ObjCacheProvider<UserAuthSession>();
/// <summary>
/// 检验token是否有效
/// </summary>
/// <param name="token">The token.</param>
/// <param name="requestid">备用参数.</param>
/// <summary>
/// 检验token是否有效
/// </summary>
/// <param name="token">The token.</param>
/// <param name="requestid">备用参数.</param>
[System.Web.Mvc.HttpGet]
public bool GetStatus(string token, string requestid = "")
public Response<bool> GetStatus(string token, string requestid = "")
{
if (_objCacheProvider.GetCache(token) != null)
var result = new Response<bool>();
try
{
return true;
result.Result = _objCacheProvider.GetCache(token) != null;
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return false;
return result;
}
/// <summary>
@ -50,15 +57,25 @@ namespace OpenAuth.WebApi.Areas.SSO.Controllers
/// <param name="token"></param>
/// <param name="requestid">备用参数.</param>
[System.Web.Mvc.HttpGet]
public UserWithAccessedCtrls GetUser(string token, string requestid = "")
public Response<UserWithAccessedCtrls> GetUser(string token, string requestid = "")
{
string userName = GetUserName(token, requestid);
if (!string.IsNullOrEmpty(userName))
{
return _app.GetAccessedControls(userName);
var result = new Response<UserWithAccessedCtrls>();
try
{
var user = _objCacheProvider.GetCache(token);
if (user != null)
{
result.Result = _app.GetAccessedControls(user.UserName);
}
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return null;
return result;
}
/// <summary>
@ -67,15 +84,24 @@ namespace OpenAuth.WebApi.Areas.SSO.Controllers
/// <param name="token"></param>
/// <param name="requestid">备用参数.</param>
[System.Web.Mvc.HttpGet]
public string GetUserName(string token, string requestid = "")
public Response<string> GetUserName(string token, string requestid = "")
{
var user = _objCacheProvider.GetCache(token);
if (user != null)
{
return user.UserName;
var result = new Response<string>();
try
{
var user = _objCacheProvider.GetCache(token);
if (user != null)
{
result.Result = user.UserName;
}
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return string.Empty;
return result;
}
/// <summary>
@ -85,8 +111,19 @@ namespace OpenAuth.WebApi.Areas.SSO.Controllers
/// <returns></returns>
[System.Web.Mvc.HttpPost]
public LoginResult Login(PassportLoginRequest request)
{
return SSOAuthUtil.Parse(request);
{
var result = new LoginResult();
try
{
result = SSOAuthUtil.Parse(request);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
/// <summary>
@ -95,7 +132,7 @@ namespace OpenAuth.WebApi.Areas.SSO.Controllers
/// <param name="token"></param>
/// <param name="requestid">备用参数.</param>
[System.Web.Mvc.HttpPost]
public bool Logout(string token, string requestid="")
public bool Logout(string token, string requestid = "")
{
try
{