From c4de3fe22fb8e54f55439502e6a0f85648874ad8 Mon Sep 17 00:00:00 2001 From: dao Date: Mon, 12 Aug 2024 20:18:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=A2=9E=E5=8A=A0=E6=9D=83=E9=99=90=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...化智慧校园基础信息接口V1.0.docx | Bin 40301 -> 39137 bytes .../Learun.Application.WebApi.csproj | 1 + .../Modules/Arrangelesson.cs | 2 +- .../Modules/ArrangelessonLogin.cs | 11 ++++ .../Modules/BaseNoAuthenticationNoLogin.cs | 59 ++++-------------- .../Modules/TransferApi.cs | 6 +- .../Learun.Application.WebApi/Until/MyEnum.cs | 21 +++++++ .../Learun.Util/Attributes/EnumAttribute.cs | 13 ++++ 8 files changed, 61 insertions(+), 52 deletions(-) create mode 100644 Learun.Framework.Ultimate V7/Learun.Application.WebApi/Until/MyEnum.cs diff --git a/Learun.Framework.Ultimate V7/Doc文档/数字化智慧校园基础信息接口V1.0.docx b/Learun.Framework.Ultimate V7/Doc文档/数字化智慧校园基础信息接口V1.0.docx index 8d7eaece84193b955a19f8f90ddc7eec96ea332f..b9d605afb7f97ce725b4d8e93a1e04be2a31f5a3 100644 GIT binary patch delta 28446 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

xXQ)K+!M+!$JweKg~`$c2= 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

k2+tBcmWc7 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 diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj index dfb9b4671..80e571ae9 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj @@ -311,6 +311,7 @@ + diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/Arrangelesson.cs b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/Arrangelesson.cs index fecee5d5c..3fbc201df 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/Arrangelesson.cs +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/Arrangelesson.cs @@ -8,7 +8,7 @@ using Nancy; namespace Learun.Application.WebApi.Modules { - public class Arrangelesson : BaseNoAuthentication + public class Arrangelesson : BaseApi { public Arrangelesson() : base("/arrangelesson/") diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/ArrangelessonLogin.cs b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/ArrangelessonLogin.cs index 17fa6e943..60b8aac39 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/ArrangelessonLogin.cs +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/ArrangelessonLogin.cs @@ -4,7 +4,9 @@ using System.Linq; using System.Web; using Learun.Application.Organization; using Learun.Application.TwoDevelopment.EducationalAdministration; +using Learun.Util; using Nancy; +using static Learun.Application.WebApi.Until.MyEnum; namespace Learun.Application.WebApi.Modules { @@ -13,6 +15,7 @@ namespace Learun.Application.WebApi.Modules public ArrangelessonLogin() : base("/arrangelessonlogin/") { + Get["/gettoken"] = GetToken; Get["/lessontype"] = GetLessonTypes; Get["/classtype"] = GetClassType; Get["/student"] = GetStudents; @@ -71,6 +74,14 @@ namespace Learun.Application.WebApi.Modules private StuSelectLessonListOfElectiveIBLL stuSelectLessonListOfElectiveIbll = new StuSelectLessonListOfElectiveBLL(); + private Response GetToken(dynamic _) + { + string sid = Request.Query["sysid"]; + var sys = EnumAttribute.GetVal(typeof(ThrSys), sid.ToInt()); + if (sys.IsEmpty()) return Fail("参数错误!"); + var token=DESEncrypt.Encrypt(sys); + return Success(token); + } private Response TranTest(dynamic _) { return Success("ok"); diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/BaseNoAuthenticationNoLogin.cs b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/BaseNoAuthenticationNoLogin.cs index 4dc1d7185..7bd9cf331 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/BaseNoAuthenticationNoLogin.cs +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/BaseNoAuthenticationNoLogin.cs @@ -5,7 +5,8 @@ using Learun.Util.Operat; using Nancy; using Nancy.ModelBinding; using System;//D:\Item\repos\DigitalScholl\Learun.Framework.Ultimate V7\Learun.Application.WebApi\Modules\TransferApi.cs -using static Learun.Application.WebApi.TransferApi; +using System.Linq; +using static Learun.Application.WebApi.Until.MyEnum; namespace Learun.Application.WebApi { @@ -96,7 +97,7 @@ namespace Learun.Application.WebApi /// public Response Success(string info) { - ResParameter res = new ResParameter { code = ResponseCode.success, info = info, data = new object { } }; + ResParameter res = new ResParameter { code = ResponseCode.success, info = "响应成功", data = info }; return Response.AsText(res.ToJson()).WithContentType("application/json"); } ///

@@ -226,10 +227,6 @@ namespace Learun.Application.WebApi #endregion #region 权限验证 - public UserInfo userInfo; - public string loginMark; - public string token; - /// /// 前置拦截器 @@ -238,50 +235,20 @@ namespace Learun.Application.WebApi /// private Response BeforeRequest(NancyContext ctx) { - //var Requesttoken = DESEncrypt.Decrypt(Request.Headers["token"].ToString()); - var Requesttoken = DESEncrypt.Decrypt(Request.Query["token"].ToString()); - - var a = EnumAttribute.GetVsS(typeof(loginins)); - - //if (Requesttoken == loginins.school) - //{ - - //} - ctx.Request.Url.Query = Learun.Util.WebHelper.Formatstr(ctx.Request.Url.Query); - foreach (var p in ctx.Parameters) - { - if (p.ParameterType == typeof(string)) - { - if (ctx.Parameters[p.ParameterName] != null) - { - ctx.Parameters[p.ParameterName] = Learun.Util.WebHelper.Formatstr(ctx.Parameters[p.ParameterName].ToString()); - } - } - } string path = ctx.ResolvedRoute.Description.Path; - //验证登录状态 - ReqParameter req = this.Bind(); - loginMark = req.loginMark; - token = req.token; - if (path == "/learun/adms/user/login" || path == "/learun/adms/user/loginbyIdCard" || path == "/" || path == "/bgimg" || path == "/learun/adms/user/img" || path == "/learun/adms/desktop/img" || path == "/learun/adms/user/imgfordc" || path == "/learun/adms/timetable/timeTableData" || path == "/quanjiang/sso/authorize" || path == "/learun/nologin/adms/annexes/upload" || path == "/learun/adms/annexes/wxlist" || path == "/learun/visitmanage/save" || path == "/learun/visitmanage/getweixinaccess_token") - {// 登录接口,默认页面接口不做权限验证处理 + if (path == "/arrangelessonlogin/gettoken") + {// token接口,默认页面接口不做权限验证处理 return null; } + var rToken = ctx.Request.Headers["token"].FirstOrDefault(); + if(rToken.IsEmpty()) return this.FailNoLogin("权限校验失败!"); - OperatorResult res = OperatorHelper.Instance.IsOnLine(req.token, req.loginMark); - if (res.stateCode == -1) - { - return this.FailNoLogin("未找到登录信息"); - } - if (res.stateCode == 0) - { - return this.FailNoLogin("登录信息已过期"); - } - else - { - // 获取登录者信息 - userInfo = res.userInfo; - } + var tss = EnumAttribute.GetVsS(typeof(ThrSys)); + + var Requesttoken = DESEncrypt.Decrypt(rToken); + if(!tss.Contains(Requesttoken)) return this.FailNoLogin("权限校验失败!!"); + + return null; } #endregion diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs index 29cd5b37a..afddb2c46 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/TransferApi.cs @@ -462,11 +462,7 @@ namespace Learun.Application.WebApi public string PersonPicturePath { get; set; } } - public enum loginins - { - school, - CODE, - } + #endregion } diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Until/MyEnum.cs b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Until/MyEnum.cs new file mode 100644 index 000000000..c46e0bf5a --- /dev/null +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Until/MyEnum.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Learun.Application.WebApi.Until +{ + public class MyEnum + { + + public enum ThrSys + { + [Description("超星")] + ChaoXin=31233 + } + + + } +} diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Attributes/EnumAttribute.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Attributes/EnumAttribute.cs index bf4f4bc97..5017ee9c0 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Attributes/EnumAttribute.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Attributes/EnumAttribute.cs @@ -42,6 +42,19 @@ namespace Learun.Util return null; } + public static string GetVal(Type enumType,int value) + { + try + { + var name = enumType.GetEnumName(value); + return name; + } + catch (Exception e) + { + return ""; + } + } + /// /// 返回枚举项的描述信息。 ///