vue 动态路由路由权限 解决方案

vue 动态路由路由权限 解决方案,第1张

路由权限思路:

1菜单栏/导航栏(一级权限)

在登录成功后,获取后端的权限数据, 根据权限数据,展示对应的路由导航或菜单即可;

2界面的控制

如果用户没有登录, 用户手动在地址栏输入路由地址,则需要跳转到登录界面

如果用户已经登录, 用户手动输入的非权限内的路由地址,则给他跳转到404界面

3按钮的控制(二级权限)

在页面中,有些账号有: 添加,删除,修改,增加等权限, 有些没有

没有权限的账号在这个页面只是可以浏览页面中的数据,需要对这些按钮 禁用or隐藏。

4请求和响应的控制 (这一步其实后端也会根据token判断身份信息, 来返回数据,可以省略)

如果用户通过非常规的手段(可能是同行), 比如通过浏览器f12将禁用的按钮disabled 改成false, 隐藏的按钮apacity:0改成了1,这些按钮就可以使用了,此时需要对按钮点击后发出的请求作出拦截

loginvue

homevue (elment-ui)

侧边导航栏

storejs

routerjs

动态路需两个地方调用:

1 loginvue 中登录成功后立即执行动态路由函数

2 appvue中, 在根组件中添加执行动态路由函数,这样每一次用户刷新,就会执行,否则刷新之后,动态路由就没了

思路3:按钮的控制(二级权限): 这里我是通过 自定义指令来实现 对按钮(增,删,改等二级权限按钮) 的显示隐藏。

更简单直接的方式,直接就在html中对button添加v-if显示隐藏即可

import '/utils/permissionjs' --> mainjs中引入文件, 嫌麻烦直接在mainjs中写

4 服务器返回状态码401, 代表token超时 or token被串改 or 未传token, 此时强制跳转到登录页重新登录

解决怎样设置QQ的空间动态权限的步骤如下:

1打开手机QQ,点击自己的头像或在手机屏幕向右滑动屏幕,调出左侧菜单栏。

2在左侧菜单栏中选择其中的设置。

3然后在设置菜单里找到联系人、隐私设置,点击选择打开。

4再其中选择动态权限设置选项,点击打开设置权限就行了。这样就解决了怎样设置QQ的空间动态权限的问题了。

就是一个基础框架的例子。

首先根据ID获取当前权限的菜单xml文件,一般将xml存储到数据库里面。然后通过xml文件去编辑菜单。

再将菜单添加到form界面上面,给你个简单例子。

    public partial class TreeMenu : RadTreeView

    {

        #region Field

        private XDocument xDoc = null;

        #endregion

 

        #region Property

 

        public XDocument XDoc

        {

            set 

            {

                thisxDoc = value;

 

                var items = xDocElement("Menu")Elements("MenuItem");

                foreach (var item in itemsToList())

                {

                    thisNodesAdd(thisCreateTreeNode(item));

                }

            }

        }

        #endregion

 

        public TreeMenu()

        {

            InitializeComponent();

        }

 

        public TreeMenu(IContainer container)

        {

            containerAdd(this);

            InitializeComponent();

 

            thisNodeCheckedChanged += TreeMenu_NodeCheckedChanged;

        }

 

        #region Method

        /// <summary>

        /// 点击节点更换

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void TreeMenu_NodeCheckedChanged(object sender, RadTreeViewEventArgs e)

        {

            //throw new NotImplementedException();

            RadTreeNode node = sender as RadTreeNode;

 

        }

 

        private RadTreeNode CreateTreeNode(XElement xel)

        {

            //string treeName = xelAttribute("Text")ValueToString();

            RadTreeNode node = new RadTreeNode();

            nodeText = xelAttribute("Text")ValueToString();

            if (xelElements("MenuItem")Count() > 0)

            {

                foreach (var q in xelElements("MenuItem"))

                {

                    nodeNodesAdd(thisCreateTreeNode(q));

                }

            }

            nodeTag = xel;

            

            return node;

        }

        #endregion

    }

菜单事件部分肯定要用到反射,都是些基础的东西。

权限设置比较简单,在数据表设置一个权限字段,你可以使用字符数据即可,例如“一般”是普通用户、“专家”是专家、“管理员”是系统管理员,登录界面可以设置用户名、密码文本框,权限设置下拉框,判断用户名、密码、权限是否正确即可。

在登录后将权限存储为程序级变量,即在模块中设置程序级变量,达到主程序界面,获取权限,根据权限,设置菜单的可 *** 作性即可。

以上就是关于vue 动态路由/路由权限 解决方案全部的内容,包括:vue 动态路由/路由权限 解决方案、怎样设置QQ的空间动态权限、C#用XML文件做动态菜单(C/S模式)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9628745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存