个人知乎
功能一-登录注册
注册
用户名合法性检测
密码长度要求
密码salt加密
用户邮件/短信激活
登录
token登记关联userid,保存入数据库
token有效期设置,下发给浏览器
cookie是token的一种形式
浏览
浏览器访问时带上cookie,服务端查cookie
判断用户状态,权限
拦截器
切面的思路:框架拦截器
所有业务都需要先判断->用户登录
判断完成后加入到上下文使能够渲染出用户信息
public class PassportInterceptor implements Handler
Interceptor{
boolean preHandle()throws Exception{
HostHolder.set(user);
}
void postHandle() throws Exception{
modelAndView.addObject("user",hostHolder.get
User());
}
void afterCompletion() throws Exception;
}
@Component
public class HostHolder{
private static ThreadLocal<User> users= new
ThreadLocal<>();
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){
registry.addInterceptor(passportInterce
ptor).addPathPatterns("/user/*");
super.addInterceptors(registry);
}
}
未登录跳转:优化用户体验
记录登录前想要访问的页面,登录后自动跳转
拦截器判断是否登录:跳转到登陆页
记录当前页:跳转时带一个参数next记录当前url
实现跳转:对应controller内解析next
数据安全性