コード例 #1
0
        public async Task <string> AddToken(UserSSOInfo userSSOInfo, TimeSpan expiresIn, bool isSliding = false)
        {
            string token = $"{Guid.NewGuid().ToString()}";
            await _cache.AddAsync(token, userSSOInfo, expiresIn, false);

            return(token);
        }
コード例 #2
0
        /// <summary>
        ///  //SSO登陆产生令牌
        /// </summary>
        /// <param name="userSSOInfo"></param>
        /// <returns></returns>

        public async Task <string> AddToken(UserSSOInfo userSSOInfo)
        {
            string token = $"{Guid.NewGuid().ToString()}";
            await _cache.AddAsync(token, userSSOInfo);

            return(token);
        }
コード例 #3
0
        public JsonResult SS0Login(string Username, string Password, string ReturnUrl)
        {
            Response <List <MainMenu> > rsp = new Response <List <MainMenu> >();
            Response <UserSSOInfo>      usi = new Response <UserSSOInfo>();
            //获取用户信息
            UserSSOInfo ssoinfo      = new UserSSOInfo();
            string      redirect_url = ReturnUrl;

            if (string.IsNullOrEmpty(ReturnUrl))
            {
                redirect_url = "/Home/Index";
                //rsp.isSSO = true;
            }

            //db查询;
            usi = UserLogin.Login(Username, Md5Helpers.CreateMD5Hash(Password));
            if (usi.status == 0)
            {
                rsp.redirect_url = redirect_url;
                rsp.status       = 0;
                rsp.msg          = usi.msg;
                return(Json(rsp));
            }
            ssoinfo = usi.entity;
            List <Role> rolelist  = ssoinfo.RoleList;
            List <Menu> menuelist = new List <Menu>();

            //foreach (var item in rolelist)
            //{
            //    //取父菜单
            //    List<Menu> tempmenue = item.MenuList.Where(x => x.ParentId == 0 && x.Menu_Type == 1).ToList();
            //    //取并集
            //    menuelist = menuelist.Union(tempmenue).ToList();
            //}

            SSOManager sSOManager = new SSOManager();
            string     token      = sSOManager.SSO_Token(ssoinfo);

            //附加token
            ViewBag.token = token;
            ViewBag.User  = Username;
            HttpContext.Session["token"] = token;
            HttpContext.Session["User"]  = ssoinfo.User.UserName;
            rsp.entity       = ssoinfo.Mainlist;
            rsp.token        = token;
            rsp.redirect_url = redirect_url;
            return(Json(rsp));
        }
コード例 #4
0
ファイル: HomeController.cs プロジェクト: lifejoyforpy/sso
        //[MyAuthorization(Roles = "Admin")]
        public ActionResult Index()
        {
            //string token = HttpContext.Session["User"].ToString();
            UserSSOInfo     info      = _SSOManager.SSO_Token_IsExist();
            List <MainMenu> menuelist = new List <MainMenu>();

            //foreach (var item in info.RoleList)
            //{
            //    //取父菜单
            //    List<Menu> tempmenue = item.MenuList.Where(x => x.ParentId == 0 && x.Menu_Type == 1).ToList();
            //    //取并集
            //    menuelist = menuelist.Union(tempmenue).ToList();
            //}
            ViewBag.MenuList = info.Mainlist;
            ViewBag.User     = HttpContext.Session["User"];
            return(View());
        }
コード例 #5
0
        public static MvcHtmlString MyExtButton(this HtmlHelper htmlHelper, string id, string name, string cssClass, string controller, string action, string value = "查询", object atttibution = null)
        {
            string      host = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.Host;
            string      url  = $"{host}/{controller}/{action}";
            UserSSOInfo user = _sso._userinfo;

            if (user.RoleList.Any(o => o.MenuList.Any(i => i.Menu_Url == url)))
            {
                //设置隐藏属性为true;
            }
            TagBuilder tag = new TagBuilder("button");

            tag.GenerateId(id);
            tag.AddCssClass(cssClass);
            tag.SetInnerText(value);
            return(MvcHtmlString.Create(tag.ToString()));
        }
コード例 #6
0
ファイル: UserLogin.cs プロジェクト: lifejoyforpy/sso
        public static Response <UserSSOInfo> Login(string username, string password)
        {
            Response <UserSSOInfo> rsp  = new Response <UserSSOInfo>();
            UserSSOInfo            info = new UserSSOInfo();
            User user = new User();
            List <UserEntity> list     = new List <UserEntity>();
            List <App>        applist  = new List <App>();
            List <Role>       rolelist = new List <Role>();
            List <MainMenu>   mainlist = new List <MainMenu>();
            string            sql      = @"select a.*  ,b.Menu_Url Main_Url ,b.Menu_Name Main_Menu  from
              (select a.UserId ,a.UserName ,a.UserJobNo ,a.Password , a.Factory, e.APP_Id,e.App_Name,  f.Role_Id,f.Role_Name ,
                           d.ParentId, d.Menu_Id,d.Menu_Name ,d.Menu_Type,d.Menu_Url,d.Sort ,d.Menu_Script,d.Menu_Img
                           from ucenter_member a ,ucenter_user_role b ,ucenter_role_menu c ,ucenter.ucenter_menu d,ucenter_appinfo e ,ucenter_role f
                           where  a.UserId=b.UserId and b.Role_Id=c.Role_Id and f.App_Id=e.APP_Id and b.Role_Id=f.Role_Id
                               and c.Menu_Id=d.Menu_Id and e.UseStatus=1 and d.DataFlag=1 and f.DataFlag=1
                              and  a.UserJobNo=@username  and a.Password=@password and a.UseStatus=1
                              order by e.APP_Id ,f.Role_Id ,d.ParentId,d.Menu_Id,d.Menu_Type ASC) a LEFT JOIN
                       (select  * from ucenter_menu where ParentId=0 and  DataFlag=1 )b   on a.APP_Id=b.App_Id

";

            try
            {
                list = DapperRepository.Query <UserEntity>(sql, new { username = username, password = password });
                if (list == null || list.Count == 0)
                {
                    rsp.status = 0;
                    rsp.msg    = "用户不存或密码错误";
                    return(rsp);
                }
                applist = list.Select(x => new App
                {
                    APP_Id   = x.APP_Id,
                    App_Name = x.App_Name
                }).Distinct(new Compare <App>((p1, p2) => (p1.APP_Id == p2.APP_Id))).ToList();
                rolelist = list.Select(x => new Role
                {
                    Role_Id   = x.Role_Id,
                    Role_Name = x.Role_Name,
                    App_Id    = x.APP_Id,
                    MenuList  = list.Where(o => o.Role_Id == x.Role_Id && o.APP_Id == x.APP_Id).ToList().Select(t => new Menu
                    {
                        App_Id      = x.APP_Id,
                        Menu_Id     = t.Menu_Id,
                        Role_Id     = t.Role_Id,
                        Menu_Name   = t.Menu_Name,
                        Menu_Script = t.Menu_Script,
                        Menu_Img    = t.Menu_Img,
                        Menu_Type   = t.Menu_Type,
                        Menu_Title  = t.Menu_Title,
                        Menu_Url    = t.Menu_Url,
                        ParentId    = t.ParentId,
                        Main_Url    = t.Main_Url,
                        Main_Menu   = t.Main_Menu,
                        Sort        = t.Sort
                    }).Distinct(new Compare <Menu>((p1, p2) => (p1.Menu_Id == p2.Menu_Id))).ToList()
                }).Distinct(new Compare <Role>((p1, p2) => (p1.Role_Id == p2.Role_Id))).ToList();
                user = list.Select(x => new User
                {
                    UserId    = x.UserId,
                    UserName  = x.UserName,
                    Password  = x.Password,
                    Factory   = x.Factory,
                    UserJobNo = x.UserJobNo
                }).FirstOrDefault();
                mainlist = list.Select(x => new MainMenu {
                    App_Id    = x.APP_Id,
                    Menu_Name = x.Main_Menu,
                    Menu_Url  = x.Main_Url,
                }).Distinct(new Compare <MainMenu>((p1, p2) => (p1.App_Id == p2.App_Id))).ToList();
                info.User     = user;
                info.AppList  = applist;
                info.RoleList = rolelist;
                info.Mainlist = mainlist;
                rsp.entity    = info;
                return(rsp);
            }
            catch (Exception ex)
            {
                rsp.status = 0;
                rsp.msg    = "网络链接异常";
                return(rsp);
            }
        }