jsp的权限控制思路

这两天接触的一个项目的权限控制思路,控制页面权限、action权限、页面内容权限

1用户

2角色

3权限组

4权限

5菜单

权限控制的5个基本模块:

  • 用户: 用户与角色关联
  • 角色: 角色与权限关联
    •   给角色赋予权限:将所有权限列出:

  • 权限组:用于归类权限
  • 权限:
    • 权限可以是一个菜单(当权限的url和菜单的url相同时即为菜单权限)

      • 获取菜单列表时根据权限过滤菜单:
      •   if (menuUrl.equals(auth.getUrl()) || (user!=null && user.getId().equals(1L))) { //或者为超级用户的话也显示
        			menuJson.setIsHidden(false);// 有权限,显示
    • 也可以为页面内容权限(当权限的url为”#***“的标识为功能权限,使用自”定义标签控制“页面内容权限的显示隐藏)
      •   JSP页面:

        1 <auth:showhtml url="#hpgg">
        2         <%--自定义标签..需要根据权限显示隐藏的内容--%>
        3 </auth:showhtml>
    • 也可以是action权限(将每一个action都加到权限中,使用struts的拦截器判断action是否有url权限)
      •   配置拦截器:
      • <interceptor name="authInterceptor" class="*************.AuthInterceptor" />    
      • 拦截器代码:
      •  1 @SuppressWarnings("serial")
         2 public class AuthInterceptor extends MethodFilterInterceptor {
         3
         4     @SuppressWarnings("unchecked")
         5     @Override
         6     protected String doIntercept(ActionInvocation invocation) throws Exception {
         7         String url = invocation.getProxy().getActionName().trim() + "!"
         8                 + invocation.getProxy().getMethod().trim();
         9
        10         Map map = invocation.getInvocationContext().getSession();
        11
        12         User_info user = (User_info) map.get("user");
        13
        14         boolean i = false;
        15         Set<Role> roles = user.getRoles();
        16         if (roles == null || roles.size() == 0) { // 无角色不能访问
        17
        18             return "noAuth";
        19         }
        20
        21         for (Role role : roles) {
        22
        23             for (Auth auth : role.getAuths()) {
        24                 if (url.equals(auth.getUrl())) {
        25                     i = true;
        26                     break;
        27                 }
        28             }
        29             if (i == true) {
        30                 break;
        31             }
        32
        33         }
        34
        35         if (i) {
        36             return invocation.invoke();
        37         } else {
        38             return "noAuth";
        39         }
        40
        41     }
        42
        43 }

      •   权限列表:
时间: 2024-09-30 06:07:20

jsp的权限控制思路的相关文章

ASP.NET MVC权限控制思路

在系统开发的时候一个老生常谈的权限管理问题,翻阅了很多的网络资料,但是总感觉离实际使用还有一段距离,其实权限控制无非就几个“请求.页面按钮.字段显示”, 对于前端权限就需要配合JS了, 这里主要展示我这些年来一直使用的一个关于权限管理的案例,如果你只是写一个简单的CMS系统,那么下面代码其实拷贝就可以用了,如果是需要进行较大型系统开发就需要进一步封装, 下面是我的思路,写的不好大家勿喷哈,有不同意见的留下一起探讨. 1.在MVC开发时路由中包含了我们所有请求信息(Controller.Actio

基于JSP的教学大纲与进度在线管理系统-java教学大纲与进度管理系统shiro权限控制

基于JSP的教学大纲与进度在线管理系统-java教学大纲与进度管理系统shiro权限控制 1.包含源程序,数据库脚本.2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善.开发环境:Eclipse ,MySQL 5.1,JDK1.7,Tomcat 7涉及技术点:MVC模式.JavaWeb.JDBC.HTML.CSS.JQUERY.shiro.文件上传.购物车等. 系统没用任何框架,前台纯JSP实现,后台servlet映射,适合刚学习J2EE的新手,代码思路清晰,注解详细,数据库用的是mysq

自己动手实现简单权限控制

最近接手一小型私活,用户量封顶上千,工期预期的也相对宽松,权限控制当然是必不可少. web 权限控制,很多项目会引入 shiro/spring-security. shiro/spring-security 继承 servlet-->filter抽象接口,运用合适的设计模式, 通过拦截客户端请求,来实现各个角色对系统资源的访问权限. 一时兴起,有了自己实现权限控制的想法,遂有此文,如果你用腻了 shiro/spring-security,不妨来和我一起完善它. 本文只做抛砖引玉之用,重点在思路,

修改struts2中UI标签的&lt;s:a&gt;进行权限控制

最近在做学习S2SH时,有一个模块式权限控制,就是对用户的操作存在权限分级操作,即不是所有的用户都可以访问全部数据.下面说一下这次我们的做法. 1.所谓权限控制,就是对URL地址的控制,用户角色中不存在该权限,那么该url地址对用户是不起反应的(用户点击无反应),最好是不可见的.整体的思路就是这样,通过对UI标签的控制而达到对权限的控制. 2.我们使用的是struts2中的a标签,而非使用简单的html中a标签.原因是在<s:a>标签的源码中存在doStartTag()和doEndTag()方

基于session做的权限控制

一直听说做权限将登陆信息放在session中,实际也说不太出个所以然来,幸运在工作当中接触到了对应的代码的copy. 实现思路: 类似于粗粒度的权限控制 将权限控制的文件按包分隔好,对应的url前缀也遵照一些标准统一. 定义包装用户信息类,包括登录后的用户信息和登录状态,用户授权信息等 使用过滤器,拦截通用请求.登录请求之外的所有请求. 过滤器中进行session中包装用户信息类是否存在,是否登录,如果有且有效则跳转对应页面,无则跳转登录页面 登录完成在session中写入用户的具体信息,包括登

Vue 实现前端权限控制

为什么做前端权限控制 前端权限控制并不是新生事物,早在后端 MVC 时代,web 系统中就已经普遍存在对按钮和菜单的显示 / 隐藏控制,只不过当时它们是由后端程序员在 jsp 或者 php 模板中实现的. 随着前后端分离架构的流行,前后端以接口为界实现开发解耦,权限控制也一分为二,前端权限控制的所有权才真正回到了前端. 可能有的同学会想,前后端分别做一套控制,是不是将事情复杂化了,而且从根本上讲前端没有秘密,后端才是权限的关键,那是不是只在后端做控制就可以了. 对于这个问题我们首先应该明确,前后

角色、权限、账户的概念理解-非常全的理论讲解权限控制

组织模型   资源模型  操作模型 谁能够执行哪些操作    执行资源的范围 资源概念资源就是想要的到的最终物质,我们可以给每一个资源定义一个权限,也可以给某一类资源定义一个权限 权限概念权限是对资源的一种保护访问.用户要访问A资源前提是用户必须有A资源的访问权限. 角色概念实事上我们不会直接把权限赋予给用户,而是通过角色来赋予给用户,因为用户拥有某一种权限是因为用户扮演着某一种角色.A 是 个经理,他管理着B公司,他拥有b,c,d的权限.实际是不是A有这个权限,而是因为Abo是经理.因为经理拥

基于MVC4+EasyUI的Web开发框架形成之旅--权限控制

我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为"用户登录身份验证"."控制器方法权限控制"."界面元素权限控制"三种控制方式,可以为Web开发框架本身提供了很好用户访问控制和权限控制,使得用户界面呈现菜单.Web界面的按钮和内容.Action的提交控制,均能在总体权限功能分配和控制之下. 本篇文章主要细化这三个方面

转Struts 权限控制

权限最核心的是业务逻辑,具体用什么技术来实现就简单得多. 通常:用户与角色建立多对多关系,角色与业务模块构成多对多关系,权限管理在后者关系中. 对权限的拦截,如果系统请求量大,可以用Struts2拦截器来做,请求量小可以放在filter中.但一般单级拦截还不够,要做到更细粒度的权限控制,还需要多级拦截. 不大理解filter(过滤器)和interceptor(拦截器)的区别,遂google之. 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 . 2.过滤器依赖与servlet容器,