Dos.ORM 配合AmazeUI 从头开始搭建后台框架(2)

周六日双休又因为家里突然来了一个新伙伴一只小蓝猫所以就没有对我自己搭的框架做进一步操作

但是今天上班因为要用外网做数据导入以至于有空完成了登录功能,写的很简陋但是以后大家拿去用换为自己

的逻辑就OK了 废话不多说 开搞~

在这里我是使用的Email和password 来做登录的大家酌情改自己用的时候

[HttpPost]
        public JsonResult Logion(string Email, string Pwd)
        {
            //判断账号密码是否输入正确
            UserInfo list = Base.DB.Context.From<UserInfo>().Where(us => us.Email == Email && us.Pwd == Pwd).ToList().FirstOrDefault();
            //如果Conut大于0登陆成功反之登录失败
            if (list != null)
            {

                SignalR.ServerHub1 SignalR = new SignalR.ServerHub1();
                SignalR.IsLogin(list.Name);
                //登陆成功存个Session
                Session["Info"] = list;
               Session["name"] = list.Name;
                return Json("OK");
            }
            else return Json("NO");
        }

  里面的Base.DB 是因为Dos.ORM创建的数据上下文 DOS.ROM 使用很简单配置也简单 这里就不给大家讲配置啦一百度就出来了就这样

但是!!!!!!!!重点来了 我们肯定不会希望我们的系统如此的Low(虽然这个登录判断是很Low的)

我们现在要做的就是一个账号只允许一个设备登录 !!!!!是不是很炫酷 但是我猜一定还有人听不明白

所以白话说明一下(就是第二个登录账号的人第一个账号会被迫下线 酷吧~不多说直接上逻辑)

因为要实时的知道我是否在线~大家一定会想到ajax长链接或者套接字等等等~~~很多

但是我们这里要使用的是微软的类库SignalR 哇这个是真的厉害哦 不多说直接开始~

就是这个了下载引用 ~引用啥呢 我这里以为自己还是一个菜鸟呢 所以我就给大家展示出你们可以复制粘贴直接用的代码~锵锵锵~

 @*SignalR*@
    <script src="~/Scripts/jquery.signalR-2.3.0.min.js"></script>
    <script src="@Url.Content("~/signalr/hubs")"></script>

  引用JS 我在登录这里引用的吼~

再看我之前的登录之中的代码~

就是这里我们要看的东西来了  引入JS接下来开始配置

打开我们项目生成的Startup配置类

接下来创建集线器

不废话了 直接上集线器代码

    [HubName("ChatsHub")]
    public class ServerHub1 : Hub
    {
        IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ServerHub1>();
        public static List<UserInfos> OnlineUsers = new List<UserInfos>(); // 在线用户列表

        /// <summary>
        /// 客户端连接的时候调用
        /// </summary>
        /// <returns></returns>
        public override Task OnConnected()
        {
            Trace.WriteLine("客户端连接成功");
            return base.OnConnected();
        }

        /// <summary>
        /// 登录连线
        /// </summary>
        /// <param name="userName">用户名</param>
        public void Connect(string userName)
        {
            var connnectId = Context.ConnectionId;

            var items = OnlineUsers.Where(x => x.UserName == userName).ToList();
            foreach (var item in items)
            {
                Clients.AllExcept(connnectId).onUserDisconnected(item.ConnectionId, item.UserName);
            }
            OnlineUsers.RemoveAll(x => x.UserName == userName);

            //添加在线人员
            OnlineUsers.Add(new UserInfos
            {
                ConnectionId = connnectId,
                UserName = userName,
                LoginTime = DateTime.Now
            });

            //上线通知

            //context.Clients.All.loginNotice(connnectId, userName);
            ////所有客户端同步在线用户
            //context.Clients.All.contactsNotice(JsonConvert.SerializeObject(OnlineUsers));
        }

        /// <summary>
        /// 如果重复登录,让其强制退出
        /// </summary>
        /// <param name="Username">Username</param>
        public void IsLogin(string Username)
        {
            UserInfos fromUser = OnlineUsers.FirstOrDefault(x => x.UserName == Username);
            //如果此用户在线那么直接发送消息
            if (fromUser != null)
            {
                // send to
                context.Clients.Client(fromUser.ConnectionId).forceexit("帐号在其他客户端登录,当前帐号退出!");
            }
        }
    }

    public class UserInfos
    {
        /// <summary>
        /// 连接ID
        /// </summary>
        public string ConnectionId { get; set; }
        /// <summary>
        /// 用户ID
        /// </summary>
        public string UserID { get; set; }
        /// <summary>
        /// 用户名
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        /// 登录时间
        /// </summary>
        public DateTime LoginTime { get; set; }
    }

  逻辑也很简单其实就是登陆的时候将信息加入实体类里面然后 后一个登陆的查一下前面在线的是否存在当前用户如果再则踢出

前端代码:

   //强制退出
    AcSignalr.client.forceexit = function (Message) {
        alert(Message);
        window.location = "/Home/Logion";
    };
 var AcSignalr = $.connection.ChatsHub;
    $.connection.hub.start().done(function () {
        //登录连线
        AcSignalr.server.connect($("#UserName").val());
    });

好基本实现就是这样子了 直接上效果

Admin登录进去了 现在使用IE去登陆这个账号我们来看一下效果

再来看看谷歌浏览器下的Admin是啥样的

诺~直接被踢下线了 ~就是这样的啦  今天就这样啦 之前没有写过权限现在设计了一个简单的 ~稍后发上来请各位大佬提提意见~谢谢

原文地址:https://www.cnblogs.com/wyq-study/p/9503961.html

时间: 2024-11-13 06:57:30

Dos.ORM 配合AmazeUI 从头开始搭建后台框架(2)的相关文章

从此不求人:自主研发一套PHP前端开发框架(31)搭建后台框架

1.使用的是easyui作为后台页面框架 header.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id=&qu

EasyUI+MVC-搭建后台框架

一.EasyUI简介: jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面. 官方网站:http://www.jeasyui.com/ 二.下载EasyUI包搭建后台框架 下载最新的EasyUI包:http://www.jeasyui.com/download/index.php 下载最新的Easyui主题包:http://www.jeasyui.com/extension/themes

从头开始搭建一个dubbo+zookeeper平台 【转】

本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用.   注册中心的选择   dubbo支持多种类型的注册中心: 这里我们选择zookeeper,其实类型的优点缺点可详细查看文档. 1:zookeeper的安装,还是采用docker这一招鲜的run命令来安装zookeeper docker run -dit --name zookeeper --hostname zookeeper-host -v /data:/data -p 2181

从头开始搭建分布式日志平台的docker环境

上篇(spring mvc+ELK从头开始搭建日志平台)分享了从头开始搭建基于spring mvc+redis+logback+logstash+elasticsearch+kibana的分布式日志平台,是在windows平台下操作的,这篇主要是将这些软件环境全部在linux+docker折腾一遍. 我们的目的是需要在docker中安装像resis,elk这些软件环境,由于我是windows平台,搜索一把找到了boot2docker,但在安装时提示需要用dockermachine来安装,dock

从头开始搭建一个dubbo+zookeeper平台

本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后的常规方案演进历程. 其次,当服务越来越多之后,我们需要做哪些服务治理? 最后,是dubbo的架构图   注册中心的选择   dubbo支持多种类型的注册中心: Multicast注册中心 Zookeeper注册中心 Redis注册中心 Simple注册中心 这里我们选择zookeeper,其实类型

spring mvc+ELK从头开始搭建日志平台

spring mvc+ELK从头开始搭建日志平台 最近由于之前协助前公司做了点力所能及的事情,居然收到了一份贵重的端午礼物,是给我女儿的一个乐高积木,整个有7大包物件,我花了接近一天的时间一砖一瓦的组织起来,虽然很辛苦但是能够从过程中体验到乐趣.这次将分享从头搭建分布式日志系统,主要是在spring mvc上结合ELK套件实现(之前有些工作由于分工不同由不同的同事来完成,我只是在已经配置好的环境下做开发而已),包含如下这些技术点: spring mvc logback logstash elas

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(0) - 目录概述

概述 博主自毕业后,进公司就一直是以ASP.NET MVC 5.0 + MySQL 进行项目开发,在项目也使用了很多常用功能,如 WCF.SignalR.微信公众号API.支付宝API.Dapper等等,前端是大杂烩,如:Bootstrap.AmazeUI.EasyUI.Light7.WeUI等等.其实对于我们公司的项目来说,技术栈虽说不庞大,但五脏俱全,而且基于这一套技术,开发速度有保证.但是,作为一个有梦想的程序猿,必须与时俱进,因此无意中接触了.Net Core 2.0.听说它是开源的?它

dos.orm

引言: Dos.ORM(原Hxj.Data)于2009年发布.2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大.最活跃.最完善的国产ORM.初期开发过程中参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,后期参考EF的Lambda语法进行大量扩展. 参考:http://www.itdos.com/dos/orm/index.html 为什么选择Dos.ORM(原Hxj.Data)? 上手简单,0学习成本.使用方便,按照sql书写习惯编写C#.NET代码.功

ORM系列之一:Dos.ORM

阅读目录 引言 1.为什么使用Dos.ORM 2.配置 3.开始使用 3.1. 物理表 3.2. 实体类 3.3. 使用方法 引言 Dos.ORM(原名Hxj.Data)于2009年发布,2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大.最活跃.最完善的国产ORM.初期开发过程中参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,后期参考EF的Lambda语法进行大量扩展. 1.为什么使用Dos.ORM 选择Dos.ORM的理由: 1.上手非常简单,0学习成