使用注解为每个Action的方法声明权限。
1.首先创建自定义注解,用于设置权限:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface PrivilegeControll {
//权限的名称,可能有很多个权限,所以用数组表示
String[] privilegeName();
}
2.在需要权限控制的action上面添加注解
@PrivilegeControll(privilegeName="增加章节")
@Action(value="toAddChapter",results={@Result(location="/WEB-INF/common/addChapter.jsp")})
public String toAddChapter() throws Exception{
return SUCCESS;
}
如果有两个或者以上的权限可以写成
@PrivilegeControll(privilegeName={"增加章节","修改章节"})
@Action(value="getChapterNo",results={@Result(type="json",params={"root","json"})})
public String getChapterNo() throws Exception{.....}
3.添加拦截器
public class CheckLoginInterceptor extends MethodFilterInterceptor{
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
//获取action方法名称
String methodName = invocation.getProxy().getMethod();
//得到Method对象
Method method = invocation.getAction().getClass().getMethod(methodName);
//如果方法存在,并且该方法添加了我们自定义的注解
if(method != null && method.isAnnotationPresent(PrivilegeControll.class)){
//获取注解对象
PrivilegeControll privilegeControll = method.getAnnotation(PrivilegeControll.class);
//获取访问该方法需要的权限的名称
String[] privilegeName = privilegeControll.privilegeName();
for(Privilege privilege : role.getPrivileges()){
for(int i = 0;i<privilegeName.length;i++){
//如果拥有权限则放行 if(privilegeName[i].equals(privilege.getPrivilegeName())){
return invocation.invoke();
}
}
}
}
}
//否则返回没有权限的视图
return "noPrivilege";
}
}
4.配置noPrivilege的视图
<global-results>
<result name="login" type="redirect">/login.jsp</result>
<result name="input">/error.html</result>
<result name="noPrivilege">/noPrivilege.html</result>
</global-results>
分享到:
相关推荐
通过本案例实现了通过自定义注解的拦截的方法可以设置访问权限;通过拦截器获取指定方法上的自定义的注解,然后判断当前的接口需不要权限校验;然后通过对应的访问去处理;demo里面的代码简单;文档齐全,初学者秒懂.本文...
后台通过自定义注解结合一个访问拦截器实现整个系统的权限控制 04. 系统前台采用全采用的Html+jQuery开发 05. 系统前台与后台的交互全部使用 Ajax 异步请求 06. 自定义 SecureValid 注解实现权限的控制 07. ...
涉及的知识点有:springboot框架原理、freemark模板标签语法、jpa数据库操作及自动建表、统一上传文件实现方法、自定义注解实现统一验证方法、权限拦截器实现权限统一管理、自定义分页插件封装、调用控制台命令对...
涉及的知识点有:springboot框架原理、freemark模板标签语法、jpa数据库操作及自动建表、统一上传文件实现方法、自定义注解实现统一验证方法、权限拦截器实现权限统一管理、自定义分页插件封装、调用控制台命令对...
* 通过拦截器和自定义注解实现了方法级粒度的**用户鉴权** ,不同用户组权限完全隔离 * 通过 参数注解 进行方法级**数据校验**,无需额外配置校验类 (通过 AOP 切面实现) * 统一的错误处理 讲解文章: * ...
● 通过AOP、自定义注解和Freemark的FTL语言实现前后权限的拦截; ● 使用拦截器过滤未登录用户请求 ; ● 借助Quartz 时钟调度框架实现流失客户数据定时筛选功能; ● 使用zTree完成权限的展示和echart完成报表...
自定义注解+拦截器实现基于RBAC接口权限校验(配套文档:https://blog.csdn.net/wujiangbo520/article/details/122057616) 全局异常处理 接口统一结果返回 一键生成数据库设计文档 大批量数据插入数据库测试 根据...
自定义权限注解与匿名接口注解,可快速对接口拦截与放行 对一些常用地前端组件封装:表格数据请求、数据字典等 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断 支持在线用户管理与服务器性能监控,...
CRM-智能办公系统前端基于LayUI框架和Freemarker技术开发,后端基于Java技术以及SSM框架开发,前后端数据通过Ajax交互,数据库... -SpringBoot 使用Aop拦截指定注解,进行权限验证; -调用echarts实现数据动态可视化。
1、项目实现Spring boot+Mybatis的整合 2、项目基于Maven做依赖管理 3、后台的分页使用Mybatis的插件pagehelper实现 5.添加定时任务:不再使用作业自动调度框架Quartz...10、包含了登录功能以及登录权限验证的拦截器
1.25 Spring Boot 拦截器HandlerInterceptor 1.26 Spring Boot启动加载数据CommandLineRunner 1.27 Spring Boot环境变量读取和属性对象的绑定 1.28 Spring Boot使用自定义的properties 1.29 改变自动扫描的包 1.30 ...
16.web集成-authc拦截器工作原理.avi 17.web集成-jsp标签权限控制.avi 18.web集成-登出操作.avi 19.spring集成-项目准备.avi 20.spring集成-shiro配置.avi 21.spring集成-登录操作.avi 22.spring集成-静态注解授权....
6.使用拦截器实现权限验证 35 7.拦截器中的注解 37 8.使用PreResultListener实现回调 39 六、使用标签 40 1.基础表单标签 40 2.单选按钮和复选框: 41 3.三种方式实现下拉列表 41 4.二级联动 42 5.其它表单标签 44 6...
在web.xml配置拦截器 在Shiro配置文件上配置在web.xml对应的bean 配置安全管理器 配置自定义的realm Shiro过滤器 anon:例子/admins/**=anon 没有参数,表示可以匿名使用。 authc:例如/admins/...
自定义权限注解与匿名接口注解,可快速对接口拦截与放行。对一些常用地前端组件封装:表格数据请求、数据字典等 。前后端统一异常拦截处理,统一输出异常,避免繁琐的判断。支持在线用户管理与服务器性能监控,支持...
使用Mybatis拦截器实现对所有SQL的拦截,修改默认的Schema,从而实现多租户数据隔离的目的。 并且支持可插拔。 9、二级缓存 采用J2Cache操作缓存,第一级缓存使用内存(Caffeine),第二级缓存使用 Redis。 由于大量的...
【资源说明】 1、基于SpringBoot和Vue的餐馆点餐系统源码+...axios设置拦截器拦截响应,如果session过期则重新登录 ### 配置 #### API `src/base/config/system.js`里的apiUrl 所有的请求是基于这个apiUrl来拼接的
自定义权限注解与匿名接口注解,可快速对某些接口拦截与放行 对一些常用的前端组件封装:表格数据请求,数据字典等 前端表单,尺度代码,支持配置一键生成 用户名:admin 密码:123456 ps:需要增删请请自行增加...