场景,修改密码: 普通用户第一种:在action中判断传的用户id是否和登录人是一个人,service这样写也可以,毕竟超级管理员可以改其他用户密码这种需求也是存在的,超级管理则判断角色,如果是超级管理员,可以修改任何人的密码。
普通用户第二种: 前端只传传密码,在后端获取当前登录人的id,直接改当前登录人id密码。
以下的是错误的:
接口接收了DTO
DTO里接收了用户id和密码,service直接使用接收的id去数据库修改,这样是不对的,如果是这样,普通用户随便传一个人的id,就可以把对方的密码改了,比如A是普通用户,传了B的ID,就直接把B的密码改了
正确的应该是这样,从后端的权限框架或者从当前登录线程的缓存中,获取当前登录人的ID
当前登录线程的缓存,指这个用户在登录的时候,有没有把当前线程的用户信息存到threadlocal里,如果存到了,可以从thread里获取,或者你们系统有别的实现,就从这些实现里去取