今天在设计网站登录的时候,想到使用spring security来完成这个功能,由于网站业务来说对于用户的访问控制是很粗的,一般情况下只需要判断用户是否登录,登录后的权限最多也只有2,3种,在这种情况下对spring security是否在效率上胜任抱有怀疑态度,于是至少要准备一个简单高效的备用方案。
大体思路是:
1、创建@LoginRequred的Annotation,用于标识controller的方式是必须登录才能访问的。
2、创建继承于ContextLoaderListener的子类,override方法public void contextInitialized(ServletContextEvent event) 获得WebApplicationContext
3、通过WebApplicationContext根据@Controller找出所有的Controller,然后分析Controller里面是否带有@LoginRequred(可以通过ApplicationContext的findAnnotationOnBean来找,例子通过参照DefaultAnnotationHandlerMapping的determineUrlsForHandlerMethods方法)
4、使用Spring MVC的拦截器,在拦截器中判断是否该方法需要登录验证判断。