关闭

spring自定义注解完成登录功能

标签: spring自定义注解登录spring切面
306人阅读 评论(0) 收藏 举报
package com.smi.am.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.smilife.core.common.valueobject.BaseValueObject;

/**
 * 拦截controller登录认证注解类
 * 
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
public @interface LoginAuth {
	@SuppressWarnings("rawtypes")
	Class value() default BaseValueObject.class;
}

package com.smi.am.aspect;

import javax.servlet.http.HttpServletRequest;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import com.smi.am.constant.SmiConstants;
import com.smi.am.utils.SessionManager;
import com.smilife.core.exception.NoLoginException;


/**
 * 登录认证切面类
 * 
 */
@Aspect
@Component
public class LoginAuthAspect {

	@Around(value = "@annotation( com.smi.am.annotation.LoginAuth)")
	public Object aroundManager(ProceedingJoinPoint pj) throws Exception {
		Object amuser = SessionManager.getAttribute(getRequest(pj.getArgs()), SmiConstants.USERNAME);
		if(amuser == null){
			//用户未登录
			throw new NoLoginException("用户未登录");
		}
		try {
			amuser = pj.proceed();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		return amuser;
	}


	private HttpServletRequest getRequest(Object[] args) {
		HttpServletRequest result = null;
		if (args != null && args.length > 0) {
			for (Object arg : args) {
				if (arg instanceof HttpServletRequest) {
					result = (HttpServletRequest) arg;
					break;
				}
			}
		}
		return result;
	}
}

0
0
查看评论

springmvc 下使用自定义注解获取登录信息

大家的项目中在controller层是怎样获取登录用户的信息呢? User loginUser=LoginUtil.getLoginUser(); 我想有些同学是通过这样获得的,如果这样实现的话, 恭喜你,你的Controller层已经丧失了单元测试的能力。因为执行这个...
  • liudajiang
  • liudajiang
  • 2015-08-07 21:15
  • 2838

Spring自定义注解

java注解:附在代码中的一些元信息,用于在编译、运行时起到说明、配置的功能。 一、元注解 java提供了4中元注解用于注解其他注解,所有的注解都是基于这四种注解来定义的。 @Target注解:用于描述注解的使用范围,超出范围时编译失败。   取值类型(ElementType): ...
  • mafan121
  • mafan121
  • 2015-12-28 20:29
  • 10442

springAOP进行自定义注解,用于方法的处理

本文采用的spring boot进行配置 maven 引入                             org.springframework.bo...
  • u011191463
  • u011191463
  • 2017-08-31 15:50
  • 367

深入Spring:自定义注解加载和使用

前言在工作中经常使用Spring的相关框架,免不了去看一下Spring的实现方法,了解一下Spring内部的处理逻辑。特别是开发Web应用时,我们会频繁的定义@Controller,@Service等JavaBean组件,通过注解,Spring自动扫描加载了这些组件,并提供相关的服务。 Sprin...
  • wwccong
  • wwccong
  • 2016-05-10 19:52
  • 1277

使用Spring处理自定义注解

spring schema spring aop aspect 参考1dubbo service 包名:com.alibaba.dubbo.config参考2spring mvc 包名:org.springframework.web.servlet.config 可以参考这两个的实现,利用sche...
  • zhanlanmg
  • zhanlanmg
  • 2015-07-08 17:58
  • 5659

SpringBoot拦截器和自定义注解验证是否登录

用SpringBoot开发后台用于移动端API接口,移动端登录一次后,返回accessToken字符串,移动端后面的交互只要传入accessToken即可验证其有效性,将accessToken转换成CurrentUser,在controller内可以直接使用操作其bean。1.Token生成帮助类;...
  • Emily201314
  • Emily201314
  • 2017-12-23 17:38
  • 636

Springmvc 自定义@自定义注解(头标注、头标签)

Springmvc 自定义@自定义注解(头标注、头标签)
  • dacuoxiaosa
  • dacuoxiaosa
  • 2016-09-03 13:25
  • 3766

Spring boot 自定义注解

相信很多学习Spring框架初学者都会碰到各种注解比如@Controller , @Response,@Compent等各类注解,如何在Spring boot中增加自己的注解,是一个比较基础的话题,也是进入AOP编程大门必经之路。 首先定义一个@Annotation的注解接口如下: packag...
  • qq_36016763
  • qq_36016763
  • 2017-12-29 14:56
  • 45

自定义注解在Spring中的应用

Java注解作为程序元素(类、成员变量、成员方法等)的一种元数据信息,对程序本身的执行不会产生影响。通过自定义注解,可以给程序元素添加特殊的声明。 Spring作为构建企业级应用的平台,提供了丰富的功能。将Java的自定义注解与Spring结合,在特定场景下实现注解的解析、处理,可以降低应用的...
  • liuxigiant
  • liuxigiant
  • 2017-01-09 23:27
  • 1016

Spring自定义注解加载和使用

原文地址:http://www.cnblogs.com/wcongcode/p/5482239.html 深入Spring:自定义注解加载和使用 前言 在工作中经常使用Spring的相关框架,免不了去看一下Spring的实现方法,了解一下Spring内部的处理逻辑。特别是开发Web应用时,...
  • tanga842428
  • tanga842428
  • 2016-10-14 05:43
  • 633
    个人资料
    • 访问:8752次
    • 积分:166
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:6篇
    • 译文:0篇
    • 评论:2条
    文章分类
  • 3(1)
    最新评论