提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:况鱼杰|2019-12-27 11:25:16.460|阅读 263 次
概述:本文将会介绍有关如何部署能够在Microsoft Azure中接收用户锁通知的Web应用程序的分步指南。Webhooks使Web应用程序可以实时订阅UserLock中发生的关键访问事件。本文分为上下两部分,此为上文。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
UserLock是您的Windows网络守门人,它可以轻松实现有效的Windows和Active Directory网络用户访问控制策略,并严格执行。
本文将会介绍有关如何部署能够在Microsoft Azure中接收用户锁通知的Web应用程序的分步指南。Webhooks使Web应用程序可以实时订阅UserLock中发生的关键访问事件。本文分为上下两部分,此为上文。(点击此处可以查看下文)
会话事件(如登录,注销,锁定,解锁,拒绝登录等)作为JSON消息发送到Web应用程序。然后可以根据特定的访问事件构建自定义工作流。结合UserLock API,它还允许为特定用户配置文件动态创建永久或临时限制,以响应特定事件。
先决条件
安装Visual Studio 2017:
ASP.NET和Web开发
Azure开发
创建UserLockWebHook MVC Web应用程序
在Visual Studio中,通过选择File(文件)>New(新建)>Project(项目)来创建一个项目。
在New Project(新建项目)对话框中,选择Visual C#>Web>ASP.NET Web应用程序(.NET Framework)。
选择MVC模板
选择MVC模板,并确保将身份验证设置为No Authentication(无身份验证)。
更新所有NuGet软件包并安装NewtonSoft.Json软件包
打开工具->NuGet数据包管理器->管理该解决方案的NuGet软件包。
打开更新标签,选中Select all packages(选择所有软件包)复选框,然后单击更新按钮。
打开浏览选项卡,在搜索字段中输入Newtonsoft.Json并安装软件包。该软件包将用于反序列化UserLock发送的通知。
在模型文件夹中创建以下类
这些类还将在反序列化过程中使用。(下载UserLock可尝试操作)
public class UserLockServer { public string Id { get; set; } public string FQDN { get; set; } public string DisplayName { get; set; } } public class UserlockNotification { public UserLockServer Userlock { get; set; } public int EventType { get; set; } public DateTime EventTime { get; set; } public string UserAccount { get; set; } public string UserDomain { get; set; } public string UserFullName { get; set; } public string ComputerName { get; set; } public int ComputerSession { get; set; } public string ClientName { get; set; } public string ClientAddress { get; set; } public string SessionId { get; set; } public int SubSessionId { get; set; } public int LogonInfo { get; set; } public int SessionType { get; set; } public string ServerAddress { get; set; } public int TimeZoneShift { get; set; } public string Param1 { get; set; } public string Param2 { get; set; } public string Param3 { get; set; } public string Param4 { get; set; } public string Param5 { get; set; } public string Param6 { get; set; } }
更新HomeController
用以下内容替换HomeController类:
public class HomeController : Controller { private static List _notifications = new List(); private static List _userLockIds = new List(); public ActionResult Index() { Response.AddHeader("Refresh", "3"); ReadUserlockIds(); return View(_notifications); } private void ReadUserlockIds() { string ids = ConfigurationManager.AppSettings["UserlockIds"]; _userLockIds = ids.Split(new char[] { ';' }).ToList(); } [HttpPost] public ActionResult Notify() { try { string data = GetPostData(Request.InputStream); UserlockNotification ul = JObject.Parse(data).ToObject(); // Is the notification sender valid? // Uncomment the following lines to add a security check // between the webhook application and UserLock service // if (!_userLockIds.Contains(ul.Userlock.Id)) // return new HttpStatusCodeResult(HttpStatusCode.OK); // Truncate Userlock Id to avoid displaying sensitive information ul.Userlock.Id = ul.Userlock.Id.Substring(1,8); _notifications.Add(ul); } catch (Exception ex) { } return new HttpStatusCodeResult(HttpStatusCode.OK); } private static string GetPostData(Stream inputStream) { string data = null; StreamReader reader = new StreamReader(inputStream); try { reader.BaseStream.Position = 0; data = reader.ReadToEnd(); } finally { reader.BaseStream.Position = 0; } return data; } public ActionResult About() { return View(); } public ActionResult Contact() { return View(); } public ActionResult GoToWebsite() { return Redirect("//www.isdecisions.com"); } }
要修复丢失的using语句,请右键单击每个错误,然后选择适当的操作。这些可以在快速操作和重构子菜单中找到。
使用Index方法中的Refresh标头可以自动刷新主页,以便按块显示传入的通知。Notify方法将UserLock通知反序列化为UserLockNotification实例。为了方便起见,选择在HomeController中添加Notify方法。您当然可以决定在另一个控制器(mycontroller / mymethod)中创建其他方法。
安全检查
控制UserLock ID可确保您避免从无效来源接收通知。因此,可以在web.config中定义一个GUID列表,以声明白名单的UserLock ID,并确保所有收到的通知均来自受信任的来源。
<appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> <add key="UserlockIds" value="{your_userlock_guid1};{your_userlock_guid2};" /> </appSettings>
注意:如果您已经部署了UserLock备份服务器,请不要忘记将UserLock备份服务器ID添加到此列表中。
然后,您可以在Notify方法中取消注释行。这样,仅处理声明的UserLock服务器发送的通知。
// Is the notification sender valid? // Uncomment the following lines to add a security check // between the webhook application and UserLock service if (!_userLockIds.Contains(ul.Userlock.Id)) return new HttpStatusCodeResult(HttpStatusCode.OK);
=========================================
想要了解或购买UserLock正版版权,请
更多精彩内容,欢迎关注下方的微信公众号,获取更多产品咨询
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢