您的位置:首页 > 其它

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

2017-11-24 20:57 323 查看

个人知乎

功能一-登录注册

注册

用户名合法性检测
密码长度要求
密码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;
}
//线程本地变量
@Component
public 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


数据安全性

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: