个人知乎 ##功能一-登录注册

来源:互联网 发布:学校网上缴费软件 编辑:程序博客网 时间:2024/05/01 05:51

个人知乎

功能一-登录注册

注册

用户名合法性检测密码长度要求密码salt加密用户邮件/短信激活

登录

token登记关联userid,保存入数据库token有效期设置,下发给浏览器cookie是token的一种形式

浏览

浏览器访问时带上cookie,服务端查cookie判断用户状态,权限

拦截器

切面的思路:框架拦截器所有业务都需要先判断->用户登录判断完成后加入到上下文使能够渲染出用户信息
public class PassportInterceptor implements Handler    Interceptor{        boolean preHandle()throws Exception{            //利用Dao验证cookie            //之后加入经过验证的数据到上下文            HostHolder.set(user);        }        void postHandle() throws Exception{            //是能够在所有模板中访问user            modelAndView.addObject("user",hostHolder.get                User());        }        void afterCompletion() throws Exception;    }//线程本地变量@Componentpublic class HostHolder{    //每个线程都有一个不同的user    private static ThreadLocal<User> users= new        ThreadLocal<>();    //注意形式,转为当前线程user    //实现map<线程id,user>形式    public User getUser(){        return users.get();    }    public void setUser(User user){        users.set(user);    }    public void clear(){        users.remove();    }}
拦截器配置,注意拦截器间的顺序
public class WendaWebConfiguration extends WebMvcConfigurer    Adapter{        @Autowired        PassportInterceptor passportInerceptor;        @Override        public void addInterceptors(InterceptorRegistry            registry){                //注册拦截器,并配置拦截url                registry.addInterceptor(passportInterce                    ptor).addPathPatterns("/user/*");                super.addInterceptors(registry);            }    }

未登录跳转:优化用户体验

记录登录前想要访问的页面,登录后自动跳转拦截器判断是否登录:跳转到登陆页记录当前页:跳转时带一个参数next记录当前url实现跳转:对应controller内解析next

数据安全性