权限控制

问题描述

大家好,问下现在在web项目中比较好的权限控制的方式是什么?我现在的实现方式是从登陆的地方获取用户id,然后传到后面的业务操作中,在sql中用where控制的,这样在每次的业务中都需要加这个权限控制,有没有更好的方法啊?

解决方案

解决方案二:

关注一下最近在看springsecurity,权限这个东西,很迷茫。
解决方案三:

继承,在父类判断或监听器
解决方案四:

说的太概念了额,偶做过功能权限跟数据权限的。功能权限将操作action做成功能点,用户的权限从功能点权限映射表加载,控制操作权限;你说的貌似想数据权限,就是部分没有权限的数据排除掉,这种需要将数据某一属性作为依据,根据它在业务处理时动态对sql控制条件。跟你说的挺雷同--
解决方案五:

#我目前的做法是写一个BaseAction类继承action类,里面写一个判断权限是否拥有的方法,返回类型是boolean,每个action都继承这个基类。做一个xml文件,里面放入每个action与数据表里权限id的映射。用户登陆时得到该用户所有的权限id组,通过那个xml得到用户可以操作的action组,在每个具体action中通过调用哪个判断权限的方法,来确定该action转向的页面。
解决方案六:

引用3楼hyf002的回复:

说的太概念了额,偶做过功能权限跟数据权限的。功能权限将操作action做成功能点,用户的权限从功能点权限映射表加载,控制操作权限;你说的貌似想数据权限,就是部分没有权限的数据排除掉,这种需要将数据某一属性作为依据,根据它在业务处理时动态对sql控制条件。跟你说的挺雷同--#

支持上面的说法。功能权限较好做,登陆时做下权限给判断就可,数据权限(状态权限)可根据具体业务画面来处理,那就是参数传值的问题了,也不会太难。
解决方案七:

问一下,如果我直接知道你的ACTION请求地址,直接请求你的对应ACTION怎么办?假设我也知道你的BEAN或者VO,DTO,我直接请求怎么拦截下来?
解决方案八:

引用4楼zs86374877的回复:

我目前的做法是写一个BaseAction类继承action类,里面写一个判断权限是否拥有的方法,返回类型是boolean,每个action都继承这个基类。做一个xml文件,里面放入每个action与数据表里权限id的映射。用户登陆时得到该用户所有的权限id组,通过那个xml得到用户可以操作的action组,在每个具体action中通过调用哪个判断权限的方……

这方法可以
解决方案九:

引用4楼zs86374877的回复:

我目前的做法是写一个BaseAction类继承action类,里面写一个判断权限是否拥有的方法,返回类型是boolean,每个action都继承这个基类。做一个xml文件,里面放入每个action与数据表里权限id的映射。用户登陆时得到该用户所有的权限id组,通过那个xml得到用户可以操作的action组,在每个具体action中通过调用哪个判断权限的方……

建议这位把代码共享下!!!
解决方案十:

引用4楼zs86374877的回复:

我目前的做法是写一个BaseAction类继承action类,里面写一个判断权限是否拥有的方法,返回类型是boolean,每个action都继承这个基类。做一个xml文件,里面放入每个action与数据表里权限id的映射。用户登陆时得到该用户所有的权限id组,通过那个xml得到用户可以操作的action组,在每个具体action中通过调用哪个判断权限的方……

这个方法果然不一样!那我想问你!<permissions><unit><permissionId>010101</permissionId><actionUrl>userAction.action</actionUrl></unit>.....................</permissions>提出几个疑问!1:你这样的设计自然是没有问题!权限编号login后加载到session当中当每次请求时去//判断权限他的BaseAction里面的方法我猜是这个样子booleanhaveRightToRequestURl(Stringurl){booleanb=false;Integer[]permitArray=加载用户权限;String[]actionUrlArray=读取action列表if(url....判断请求URl是否在ActionUrlArray中){returnb;}}

以上代码估计你是这么写的疑问1:action路径保存在*.XML中.为什么不保存在db中呢!难道xml比数据库更安全。更好操作![操作xml的Api也不是那么好用]疑问2:你在BaseAction中写判断权限的方法为什么不写过拦截器呢!方便,好配置,而轻松耦合!你如果写在BaseAction里面那么你在每个action中同样要去调用super.haveRightToRequestURl();这样只要是有权限控制的地方你都得写.个人观点,如有异议请提出!.虚心接受!
解决方案十一:

xml文件是我猜想的!当然如果你能贴出来更好。只要不涉及到公司保密什么的就行!
解决方案十二:

application.setAttribute("adminType","admin");这是一个键——值形式保存参数的东西adminType是保存数据的参数相当于一个变量admin是用户的权限可以把用户权限放到第二个参数上application是全局变量在别的网页上用application.getAttribute("adminType")就可以获取保存在adminType中的数据这样就可以进行判断但是application是全局变量不要这么用因为别人访问网页的时候也是用同一个application那样就乱套了推荐使用sesstion他的用法和application一样他的意思是用户与服务器的一次会话只能你用别人用不了sesstion.setAttribute("adminType","admin");和上面一样--END
解决方案十三:

引用1楼osomc的回复:

关注一下最近在看springsecurity,权限这个东西,很迷茫。

去SpringSide吧,里面有集成的Springsecurity,还有实例.
解决方案十四:

比较简单的是自己写的Filter在这里控制权限成熟的框架SpringSecurity
解决方案十五:

我实现的方法是把用户的权限分组,该权限可以操作的action的映射存在数据库中,再把权限分给用户。写一个BaseAction类继承action类,里面写一个判断权限是否拥有的方法,返回类型是boolean,每个action都继承这个基类。publicabstractclassBaseAction{publicbooleanhasRight(){//根据登录信息判断是否有权限}}

其他有权限设置的action继承BaseActionpublicclassOtherActionextendsBaseAction{}

四楼的详细做法,可能就是上面的
解决方案:数据库要有用户表、角色表、用户角色关联表、权限表、角色权限关联表,再用springsecurity去控制。
解决方案:我已经被弄得有点头大了。。。

时间: 2024-07-30 10:56:14

权限控制的相关文章

OSS细粒度的权限控制

目前子账户控制台登录权限控制,对于bucket级别的权限控制,目前仅能实现:控制台登录能看到所有的bucket,但只对部分bucket有操作权限,其他bucket操作报错:不能实现控制台登录只能看到有权限的bucket: 对于目录级别的权限控制,目前仅能实现: 控制台登录能看到对应目录的所有同级目录及其所有的父目录及父目录的同级目录,但仅对该目录及目录下的资源有对应的操作权限,其他目录点击操作报错:具体实现如下1.子账户创建 1)进入RAM管理控制台,选择用户管理 短信验证成功后,子账户创建完成

集中权限管理系统-java 跨域单点登录结合集中权限管理 权限控制采用shiro

问题描述 java 跨域单点登录结合集中权限管理 权限控制采用shiro 这种需求的系统谁做过 之前 参考了 网上博客的 oauth2 但是发现不太符合我这个需求 因为oauth2只是授权 并不能解决 登录集中权限系统后 登录其他网站的问题 现在的需求是 用户权限系统只需要一个系统来 维护其他系统 没有用户系统 统一先通过集中权限系统登录后进行用户角色权限维护 如果先登录其他系统这跳转到集中权限系统进行先登录 而且也不能解决集中权限管理的问题 我想过可能需要redis来 实现这功能 但是 总感觉

用ASP实现分级权限控制

控制 本文实现的是一个帐务管理系统中分级权限的控制,程序使用ASP和JavaScript编写,在装有IIS4.0的win NT服务器上运行,速度快,易维护. 权限级别划分如下: ①.院长和财务科长:不能输入,可以无限制查询.统计: ②.副院长:不能输入,可以查询.统计其分管部门的帐务: ③.部门领导:不能输入,可以查询.统计本部门的帐务: ④.会计:能输入各部门的帐务(一个会计有时要做几个部门的帐),只能查询.统计自己输入的帐务. 涉及的数据库和字段如下 ①.JK_USER数据库及字段:id(序

对权限控制又很深入的讨论(1)

控制 我也请教一个关于权限设计方面的问题 我现在在做一个系统,一个类似信息发布的东东,本来也无所谓,可没想到用户提出了许多BT的要求,尤其是权限方面,本来照我的常规思维,这种东东一般也就是划分几个角色,划分几个信息的发布模块等等也就行了,甚至公司都有现成的东西直接用.可没想到客户的要求比较刁钻.我先说说系统的大概模样.信息发布吗,首先当然要划分信息的类别和层次,而这层次是不定的,可能是两三层,也可能是十层.八层(没这么变态吧^_^),其实就类似与windows的资源管理器的样式,目录里面含着文件

.NET平台下带权限控制的TreeView控件节点生成算法

treeview|控件|控制|算法 一.引言 在应用系统开发中,TreeView是一种使用频率很高的控件.它的主要特点是能够比较清晰地实现分类.导航.浏览等功能.因而,它的使用方法与编程技巧也一直受到技术人员的关注.随着应用需求的变化,在很多情况下我们需要实现数据显示的权限控制,即用户看到的数据是经过过滤的,或是连续值,或是一些离散的值.就TreeView而言,原先可能显示出来的是完整的具有严格父子关系得节点集,而经权限过滤后所要显示的节点可能会变得离散,不再有完整的继承关系.本文针对这一问题,

基于.net mvc的校友录五 web.config对的配置以及filter实现的权限控制

web.config配置文件 此文件是整个系统的配置中心,它告诉iis服务器本网站需要哪些运行时环境,需要哪些环境,将要进行哪些操作,开发人员也会将一个常量性的数据放在此配置中,以备系统全局调用.此文件内容丰富,对于一些普适性的项目,不作说明,只针对本系统的配置作相应说明. web.config配置文件 web.config是xml格式的文件,它是一种结构性文档,可以通过结点对数据进行遍历.第一行<?xml version="1.0" encoding="utf-8&q

Liferay中在页面上进行权限控制

在Liferay中,如果我们想要在页面上进行权限控制,比如只有指定权限的用户能看到一些内容,那么我们可以用Liferay预定义的user对象来获取这个对象所拥有的权限,然后再控制页面的显示. 为了在liferay页面上使用user对象,我们必须加入标记库: <liferay-theme:defineObjects/> 然后我们可以在页面上,直接使用user对象,来控制权限,比如我们可以将当前用户是否为管理员用户的存入到一个布尔变量中,如下: <!-- charles:determine

OGG 安全特性:使用cmdsec进行权限控制

四.使用cmdsec进行权限控制 GoldenGate 可以限制一些用户对命令的使用.例如可以让一些监控用户只使用INFO和STAT命令,不允许其使用start和stop命令,这是通过对操作系统用户组的限制而是现在限制使用命令的目的. GoldenGate使用通过在安装目录下创建一个文件,并在文件加入一些规则来控制用户对命令的使用,每一行一条规则,规则的顺序要从控制范围最广到范围最少从上到下写,每个规则要用空格隔开.书写规则的格式如下: 示例21: <command name> <com

sharepoint 2010扩展调查字段属性(6)根据权限控制是否允许用户多次评选

在前面一篇文章提到,如何根据权限设置是否允许用户进行多次回复:sharepoint 2010 扩展调查字段属性(3)-根据权限设置是否允许多次回复 这里也是同样配置. 在调查权限配置表,配置多一条数据,如下图 其中IsAllowMultipleResponse 代表是否需要多次评选,如果只允许投票1次,则填写"否". 当用户投票完成后,再进入到投票主页面,则不会再看到"答复次调查",如下图 关于根据权限控制是否允许用户多次评选,详情请请参考sharepoint 20

在ASP.NET应用中集成Windows域帐户来进行权限控制

企业应用程序采用域用户来代替独立的用户管理模块的好处很多. 程序本身不需要单独编写用户帐号管理模块 与域用户集成,用户不需要单独记忆用户名口令,可以实现无缝登录 采用与用户方案安全性提升到域用户安全级别 其他好处多多 首先需要配置IIS: 为你的应用单独建立一个web虚拟目录,右键选择属性里的目录安全,权限与访问控制,把"打开匿名访问"不选,仅仅选择"集成Windows权限认证",别的都不要选,确定. 集成域用户来控制用户访问的途经有两种,一种是利用NTFS权限控制