java web项目中注解控制登录
来源:互联网 发布:宁波每日成交数据 编辑:程序博客网 时间:2024/04/19 08:32
当用户无权限访问某个java方法时,可以通过自定义注解进行控制访问权限
1、定义注解
@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Mappingpublic @interface Login { ResultTypeEnum value() default ResultTypeEnum.json;}
其中 ResultTypeEnum 为枚举类型,来相应用户请求参数的类型
/** * 枚举类型 返回结果枚举 * 2014-10-15 * */public enum ResultTypeEnum { page, json}
2、编写拦截类,在spring管理进行请求方法的拦截,对于有写Login注解的方法进行判断,如果未登陆,则进行返回,否则用户登录验证通过
public class LoginAnnotationInterceptor extends HandlerInterceptorAdapter {public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if(handler instanceof HandlerMethod){HandlerMethod handler2 = (HandlerMethod) handler;Login login = handler2.getMethodAnnotation(Login.class);if (null != login) {// 没有注解声明权限,放行/**从header中区别用户是否登录过**/String userId=request.getHeader(CommonStaticConstant.USER_ID);if (null == userId) {// 依据请求类别返回不同数据if (login.value() == ResultTypeEnum.page) {//跳转到传统页面的登录//request.getRequestDispatcher("/login.jsp?oprst=false&opmsg=请<strong><strong>登录</strong></strong>!").forward(request, response);} else {response.setCharacterEncoding("utf-8");response.setContentType("application/json;charset=UTF-8");OutputStream out = response.getOutputStream();PrintWriter pw = new PrintWriter(new OutputStreamWriter(out,"utf-8"));//返回json格式的提示pw.println("{\"code\":\""+HttpStatus.NOT_ACCEPTABLE.value()+"\",\"msg\":\"请先登录\"}");pw.flush();pw.close();}return false;}}}return true;}}
3、在spring配置文件application.xml中进行配置
<!-- 添加监听,对添加了注解需要监听的方法进行监听 未登陆的操作需要返回至登陆界面 add by atao 2014-10-16 --><mvc:interceptors> <bean class="com.yjh.mobile.listener.CommonInterceptor" /><bean class="com.yjh.mobile.listener.LoginAnnotationInterceptor" /></mvc:interceptors>
4、在需要验证登陆的方法上架上注解验证效果
/** * 通过商品或者用户条件查询当前用户下已经收藏过得所有商品 * @param id * @return CollectGoods * 2014-10-11*/@Login(ResultTypeEnum.json)@RequestMapping(value = "/list",method = RequestMethod.GET)public List<CollectGoods> getCollectGoodsList(@RequestParam(required = false) Integer rowNum,@RequestHeader(value = CommonStaticConstant.USER_ID, required = true) String userId){ Map<String, Object> param = new HashMap<String, Object>(); param.put("user_id", userId); param.put("count", count);return collectGoodsMapper.list(param);}
0 0
- java web项目中注解控制登录
- java 注解权限控制
- Java Web项目中读取
- eclipse中java项目转成Web项目
- eclipse中java项目转成Web项目
- eclipse中java项目转成Web项目
- eclipse中java项目改成web项目
- eclipse中java项目转成Web项目
- MyEclipse中web项目引用java项目
- Myeclipse中java项目转成Web项目
- Myeclipse中java项目转成Web项目
- Myeclipse中java项目转成Web项目
- eclipse中java项目转成Web项目
- myeclipse中java项目转web项目
- Myeclipse中java项目转成Web项目
- java web项目防止多用户重复登录解决方案
- java web项目防止多用户重复登录解决方案
- java web项目防止多用户重复登录解决方案
- Caused by: java.lang.UnsatisfiedLinkError: Couldn't load microphone: findLibrary returned null
- Memory Analyzer 1.4.0 Release(内存分析工具)
- C/C++文件重定向的几种方式
- 黑马程序员——JAVA基础之继承
- MAVEN pom.xml配置文件详解
- java web项目中注解控制登录
- RMAN备份与恢复—恢复归档日志、控制文件、参数文件
- 获取当前ViewPager里面的Fragment对象
- 无废话WCF入门教程一[什么是WCF]
- 标准linu休眠和唤醒机制分析(一)
- HTTP 状态消息
- linux shell 数组 遍历
- java中Class.getResource用法
- FragmentPagerAdapter与FragmentStatePagerAdapter区别