spring aop实现权限控制

这是用spring aop 实现的一个权限控制,已注解为主。

一共有2个类, 1个类是注解,另一个就是切面类了:


以下是具体代码:

这是个注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Authentication {
	/**
<span style="white-space:pre">	</span> * 用于权限控制,如果string[]里包含用户组名字,则验证成功
<span style="white-space:pre">	</span> */
	String[] need();
	
}

下面是切面类的方法:

	public Object invoke(MethodInvocation invocation) throws Throwable {
		//如果方法未被注解则通过
		if(!invocation.getMethod().isAnnotationPresent(Authentication.class)){
			return invocation.proceed();
		}
		//从session里取出当前用户的信息
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpSession session = request.getSession();
		String roleName = ((LoginInfo) session.getAttribute("loginInfo")).getRole().getRoleName();

		Authentication authentication = invocation.getMethod().getAnnotation(Authentication.class);
		String[] needs = authentication.need();
		//检查权限,未通过则抛出异常
		if(needs!=null&&needs.length>0&&needs[0].length()>0){
			for(String s:needs){
				if(roleName.equals(s)){
					return invocation.proceed();
				}
			}
			
			throw new PermissionDeniedException("权限不足");
		}
		return invocation.proceed();
	}

想要某个方法被审查只要在方法前面加上 @Authentication(need="XX") 就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值