aop如何取得上下文的参数和信息
发布网友
发布时间:2022-05-21 07:08
我来回答
共4个回答
热心网友
时间:2023-10-18 10:34
你可以在AOP的类里声明一个变量,当用户登陆的时候在Action里你手工的把要存在session里的东西set到这个变量里(当然Action里要注入AOP的那个类)
热心网友
时间:2023-10-18 10:35
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionMapping;
import org.aspectj.lang.JoinPoint;
public class SessionSecurityHandler {
private void checkSessionSecurity(JoinPoint joinPoint)
{
Object[] args = joinPoint.getArgs();
if(args.length>=3)
{
ActionMapping mapping=(ActionMapping)args[0];
HttpServletRequest request=(HttpServletRequest)args[2];
HttpSession session=request.getSession();
System.out.println("---"+session.getAttribute("userName")+"---");
//没有判断session
mapping.findfindForward("sessionError");
// throw new RuntimeException("session");
}
}
}
通过JoinPoint 就能拿到参数了,这个的顺序就是你要调用的那个方法的顺序
我也是在做这个session认证!!
我也得请教你个问题!!我现在要是session认证失败,怎么返到一个特定的页啊?
我定义了<global-forwards>不好用.
我又 throw new RuntimeException("session");定义<global-exceptions>也不好用啊,跳不出去 告诉我怎么做,谢谢!!
热心网友
时间:2023-10-18 10:35
有个类可以获得的...不过偶忘了是哪个...
热心网友
时间:2023-10-18 10:36
开源的好处, google一下不久得了吗。
((UserDetails) ((SecureContext) ContextHolder.getContext()).getAuthentication().getPrincipal()).getUsername();
参考资料:http://forum.springframework.org/showthread.php?t=12415