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

个人知乎

功能一-登录注册

注册

用户名合法性检测
密码长度要求
密码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

数据安全性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值