基于springmvc的通用数据权限校验(鉴权)框架——使用示例

最近在开始写【spring源码深度解析】系列文章,如果有对spring源码感兴趣的同学,欢迎点击左上角我的头像,查看相关文章,该系列文章均是结合我当时学习源码的经历编写完成,不是一上来就堆砌源码,而是从日常使用展开学习,力求让初学者弄懂spring相关模块的实现

基于springmvc的通用数据权限校验框架——使用示例

前言

首先提出一个问题:在后台管理系统中,我们一般会根据当前登录用户查出直属相关的数据做列表展示,列表中有一列都会供用户点击来查看详情或其他信息,比如我是个保险公司的销售员,我要看我签约了哪些客户,然后点击某一个客户的详情看看签的合同细节,大家一般会怎么做?

有些同学可能会这么实现(采用springboot,代码只是基本实现,忽律空指针等异常)

  • 首先是登录:

    代码实现(简单示意)
	//模仿redis存储登录用户token及用户信息
    public static Map<String, Map<String,Object>> redisMap =new HashMap<>(128);
	@Autowired
    private JdbcTemplate jdbcTemplate;
    
    @RequestMapping("/login")
    @ResponseBody
    public WebResult login(String username, String password){
   
   
        //密码就不做加解密了
        List<Map<String, Object>> userMapList=jdbcTemplate.queryForList("select * from t_user where name=? and password=?",username,password);
        if (userMapList==null || userMapList.size()==0){
   
   
            return WebResult.errorWebResult("用户名或密码错误");
        }
        Map<String,Object> dd=new HashMap<>();
        dd.put("userId",userMapList.get(0).get("id"));
        String token="test-"+ UUID.randomUUID().toString();
        redisMap.put(token,dd);
        return WebResult.successWebResult(token);
    }
  • 当前业务员发展的客户列表

    代码实现
	@Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping("/customerList")
    @ResponseBody
    public WebResult customerList(String token){
   
   
    	Integer userId = (Integer) Application.redisMap.get(token).get("userId");
        //根据当前用户查出
        return WebResult.successWebResult(jdbcTemplate.queryForList("select * from t_customer where user_id=?",userId));
    }
  • 点击【合同详情】
    在这里插入图片描述
    代码实现
    (前端使用的layui,这里不重要,只需要知道前端调用详情的接口时传了客户id到后台)
	layui.use('table', function(){
   
   
        var table = layui.table;

        table.render({
   
   
            elem: '#test'
            ,url:'http://localhost:8080/customer/customerList'
            ,where: {
   
   token: sessionStorage.getItem("token")}
            ,cols: [[
                {
   
   field:'id', width:80, title: 'ID', sort: true}
                ,{
   
   field:'username', width:80, title: '用户名'}
                ,{
   
   field:'sex', width:80, title: '性别', sort: true,templet: function(d){
   
   
                        return d.sex==1?'男':'女';
                    }}
                ,{
   
   field:'city', width:80, title: '城市'}
                ,{
   
   field:'sign', width:80, title: '签名'}
                ,{
   
   field:'classify', width:120,title: '职业'}
                ,{
   
   field:'wealth', title: '更多操作', sort: true,templet: '<div><a href="javascript:showContractInfo({
   
   {d.id}})"  class="layui-table-link">合同详情</a></div>'
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值