jQuery MiniUI

 找回密码
 立即注册
查看: 3733|回复: 9
打印 上一主题 下一主题

静态页面访问权限问题 [复制链接]

Rank: 1

跳转到指定楼层
楼主
发表于 2014-5-28 13:00:57 |只看该作者 |倒序浏览
版主管理员MINIUI的工作人员你们好,在论坛里看你们都非常热情也有耐心的网友解答问题,真是感激不尽!
因为研究了几天MINIUI,有很多功能确实很好用的,于是常试做了很多个html页面,这些页面都是通过ajax和后太的aspx互交的。我这里有几根问题想问问
1,如图
后台:

这个前台htm页面中的数据就在后台的执行下插入数据库了,因为技术检验不足,也许我问的问题很本身就是错误的,请高手见谅,因为网站中有很多这样的htm页面,那么问题来了,访问权限怎么控制,当权限不足时返回给登录页面。登录后每个htm页面通过一个类的方法注册session,注册后要检查,这里有一个方法:

当然这里这个方法通过ajax请求后是不会跳转的,redirect方法只有执行ashx,或者aspx页面进行跳转,那么当访问其他htm页面时,怎么调用这个类里的方法检查session后调用这个方法进行页跳转到登录页面(方法的高效重用性)。如果直接每个页面都写成aspx后,这个就很好实现了,问题是原来网页本身是html静态的,不可能在每个htm的ajax下通过success函数对返回值进行widow.location.href进行跳转吧,这样多麻烦,其他.net与miniui问题会继续补充。求解答为谢。


附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

沙发
发表于 2014-5-28 14:04:18 |只看该作者
登录的时候会与后台进行交互,拿ajax来说,当你交互到后台之后,去访问下这个checklogin(),这个方法里面,可以返回一个当前登录用户的权限值,可以在之前登录之后从session里面获取,然后把这个权限值返回到前台,前台根据这个权限值,来动态控制miniui的一些控件,比如按钮的 可见或者可用,或者页面返回跳转到登录界面等等操作

Rank: 1

板凳
发表于 2014-5-28 16:32:38 |只看该作者
factory 发表于 2014-5-28 14:04
登录的时候会与后台进行交互,拿ajax来说,当你交互到后台之后,去访问下这个checklogin(),这个方法里面,可以 ...

这样每个页面都写ajax来判断真的好麻烦,看来只有封装一个js来给每个页面调用,每个页面都加Js链接,微软的webFrom派不上什么用场了!

Rank: 1

地板
发表于 2014-5-28 17:03:49 |只看该作者
在开发过程中,一直有个问题困扰着我,不要相信客服端,还有客服端可以禁用js,js禁用了整个项目乱成一团糟,是有很少的用户不会禁用js,但不排除sb用户真的就不注意禁用了js,完蛋。包括下载的MINIUI中的静态页面被打开时,没有禁用js的IE10都会提示此网站已限制运行脚本或ActiveX控件!不允许的话整个网页真是XX样!技术不精真的累哦!

Rank: 8Rank: 8

5#
发表于 2014-5-28 17:50:46 |只看该作者
puxu1989 发表于 2014-5-28 17:03
在开发过程中,一直有个问题困扰着我,不要相信客服端,还有客服端可以禁用js,js禁用了整个项目乱成一团糟 ...

那没办法,如果不靠JS,你如何取操作一个HTML的dom元素?

如果你的用户连这个起码的JS都非得要禁用,那就肯定无法使用

Rank: 1

6#
发表于 2014-5-28 18:00:54 |只看该作者
factory 发表于 2014-5-28 17:50
那没办法,如果不靠JS,你如何取操作一个HTML的dom元素?

如果你的用户连这个起码的JS都非得要禁用,那就肯 ...

谢谢版主的解答,那判断是否登录这个问题函数要写在<body onload..window.onload事件里?还是有没有更好的结决方案呢?

Rank: 8Rank: 8

7#
发表于 2014-5-28 18:13:12 |只看该作者
本帖最后由 factory 于 2014-5-28 18:14 编辑
puxu1989 发表于 2014-5-28 18:00
谢谢版主的解答,那判断是否登录这个问题函数要写在

是否登录你可以像往常一样处理,后台照常看下用户名密码是否正确,或者session是否过时等等,如果过时了就跳转页面好了,

只是权限的控制,不能像服务端控件那样处理,由于miniui是纯JS控件,你无法在后台直接控制他,所以只能请求后台,然后返回权限,再在前台控制miniui的控件的权限显示禁用与否.

Rank: 1

8#
发表于 2014-5-28 18:47:14 |只看该作者
factory 发表于 2014-5-28 18:13
是否登录你可以像往常一样处理,后台照常看下用户名密码是否正确,或者session是否过时等等,如果过时了就跳 ...

嗯嗯,如果用你们这个ajaxservice里的 //权限管理
    protected void BeforeInvoke(String methodName)
    {
        //Hashtable user = GetUser();
        //if (user.role == "admin" && methodName == "remove") throw .      
    }
这个方法前检查验证权限,可惜服务端都重新写了个service页面,没有经这个Invoke验证, 打个比喻,如果用这个方式或者调用上面说的checklogin方式取得权限,假设 没有权限Response.Write(“没有权限");ajax的成功回调函数text=”没有权限"再用window.location套装进行跳转,我是这样的想法,能够实现,但不知道对不对,你的跳转方案是什么?并不是你说的根据权限控制miniui禁用与否,本身就用miniui直接在静态页面上布局,数据显示与操作,这些页面不能根据知道url访问的,所以求一个跳转的解决方案,我上面过的方案可用吗?还有ajax好像暴露了一些与后台交互的方法!谢谢再次解答

Rank: 8Rank: 8

9#
发表于 2014-5-29 09:31:22 |只看该作者
puxu1989 发表于 2014-5-28 18:47
嗯嗯,如果用你们这个ajaxservice里的 //权限管理
    protected void BeforeInvoke(String methodName)
...

ajaxservice里面的,只是告诉一些用户如何做的例子,如果用户自己已经有了一些后台的方法和规则,那么就用自己的就行. 后台对于miniui来说是不管的.

你这种跳转当然也是可以的,没什么问题

Rank: 1

10#
发表于 2014-5-31 17:57:24 |只看该作者
puxu1989 发表于 2014-5-28 18:47
嗯嗯,如果用你们这个ajaxservice里的 //权限管理
    protected void BeforeInvoke(String methodName)
...

/// <summary>
        /// 修改模块
        /// </summary>
        [WebMethod(EnableSession = true)]
        public string ModuleSignalModify(int ModuleID,string ModuleAuthority, int ModuleType ,string ModuleName, string ModuleTag, string ModuleURL, bool ModuleDisabled, int ModuleOrder, string ModuleDescription, bool IsMenu)
        {
            if (!iSeek.RGP.SessionBox.CheckUserSession()) return ErrorHelper.GetErrMessage(101, "您未登录,或登录超时!");
            if (!iSeek.RGP.UserHandle.ValidationHandle("Sys_ModulesPage", iSeek.RGP.RGP_Tag.Edit))
                return ErrorHelper.GetErrMessage(102, "您无权使用该功能,请联系管理员!");

            iSeek.RGP.BLL.RGP_Modules bll = new iSeek.RGP.BLL.RGP_Modules();
            iSeek.RGP.Model.RGP_Modules model = new iSeek.RGP.Model.RGP_Modules();
            model.ModuleID = ModuleID;
            model.ModuleTypeID = ModuleType;
            model.ModuleName = ModuleName;
            model.ModuleTag = ModuleTag;
            model.ModuleURL = ModuleURL;
            model.ModuleDisabled = ModuleDisabled;
            model.ModuleOrder = ModuleOrder;
            model.ModuleDescription = ModuleDescription;
            model.IsMenu = IsMenu;
            try
            {
                ArrayList list = new ArrayList();
                string[] arr = ModuleAuthority.Split(",".ToCharArray());
                for (int i = 0; i < arr.Count(); i++) list.Add(arr);
                    if (bll.UpdateModule(model) > 0 && bll.UpdateAuthorityList(list, ModuleID)) return "{Response: \"修改成功!\"}";
                    else return "{ ErrCode: \"11\", ErrMsg: \"修改失败!\"}";
            }
            catch(Exception ex)
            { return ErrorHelper.GetErrMessage(100, ex.Message); }
        }

自己写个权限管理呀,我是这样做地!!

Archiver|普加软件

GMT+8, 2024-6-29 13:53 , Processed in 1.062804 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部