在java中,注册功能的实现首先需要判断用户名,密码是否合法,用户名不能重复,包含敏感词等。同时不要将明文的密码直接保存到数据库,我们可以先用md5算法对用户密码和用户的salt整体进行加密,然后返回相应注册的信息。当注册成功时则服务器端则向客户端发送一个token。
客户端已经被下发了一个token,当客户端发送带token的http请求时,首先根据token获取用户的id,再根据用户id查询用户的具体信息,接着利用用户和页面访问权限进行管理,返回对应的渲染页面。
后端主要是通过拦截器来实现如上的功能
1. public abstract class HandlerInterceptorAdapter implements HandlerInterceptor{
2. // 在业务处理器处理请求之前被调用
3. public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
4. Object handler) throws Exception{
5. return true;
6. }
7. // 在业务处理器处理请求完成之后,生成视图之前执行
8. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
9. ModelAndView modelAndView)
10. throws Exception{
11. }
12. // 在DispatcherServlet完全处理完请求之后被调用,可用于清理资源
13. public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
14. Object handler, Exception ex)
15. throws Exception{
16. }
17. }
preHandler : 是controller的前置方法,当方法返回false整个请求就结束了。多个Interceptor,然后SpringMVC会根据声明的前后顺序一个接一个的执行,而且所有的Interceptor中的preHandle方法都会在。
WebRequestInterceptor和HandlerInterceptor的preHandler的方法的区别就在与webRepuestInterceptor的preHandler的方法是没有拦截的功能,是没有返回值的。
postHandle : 就是在当前请求进行处理之后,也就是Controller方法调用之后执行,但是它会在DispatcherServlet进行视图返回渲染之前被调用。
afterHandler:该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行,可用于清理资源。
参考资料:
1. springmvc拦截器 http://www.sohu.com/a/128772280_523754