后台管理项目总结二 渲染用户头像; ajaxPrefilter 函数 总结;info;pwd;更换头像的插件 cropper; 文章分类;

--------------------- 后台主页 --------------------

1.1 获取用户的基本信息

  1. 导入需要的脚本:
<!-- 导入 jQuery -->
<script src="/assets/lib/jquery.js"></script> 
<!-- 导入自己封装的 baseAPI --> 
<script src="/assets/js/baseAPI.js"></script>
 <!-- 导入自己的 js 文件 -->
<script src="/assets/js/index.js"></script>
  1. 定义 getUserInfo 函数:(获取用户的基本信息)
// 获取用户的基本信息
function getUserInfo() {
   
  $.ajax({
   
    method: 'GET',
    url: '/my/userinfo',
    success: function(res) {
   
      if (res.status !== 0) {
   
        return layui.layer.msg('获取用户信息失败!')
      }
      // 调用 renderAvatar 渲染用户的头像
      renderAvatar(res.data)
    }

1.2 渲染用户头像

  1. 定义 renderAvatar 函数:
    (因为刚注册的用户,没有 nickname 名称,所以需要判断)
    (刚注册的用户没有头像,所以也需要判断)
// 渲染用户的头像
function renderAvatar(user) {
   
   1. 获取用户的名称
  var name = user.nickname || user.username
  
   2. 设置欢迎的文本
  $('#welcome').html('欢迎&nbsp;&nbsp;' + name)
  
   3. 按需渲染用户的头像   
  if (user.user_pic !== null) {
   
    // 3.1 渲染图片头像
    $('.layui-nav-img')
      .attr('src', user.user_pic)
      .show()
    $('.text-avatar').hide()
  } else {
   
    // 3.2 渲染文本头像
    $('.layui-nav-img').hide()
    var first = name[0].toUpperCase()
    $('.text-avatar')
      .html(first)
      .show()
  }
}

1.3 统一为有权限的接口设置headers请求头

  1. 在 baseAPI的 ajaxPrefilter 中添加如下代码:
    (查询判断,如果 api 中 有 my 的字符。 则 该 ajax 请求 需要 用户的 安全码,)
// 统一为有权限的接口,设置 headers 请求头 
if (options.url.indexOf('/my/') !== -1) {
    
	options.headers = {
    
		Authorization: localStorage.getItem('token') || '' 
	}
 }

1.4 实现退出功能(这个调用了 layui 的框架,用的 confirm 方法)

  1. 修改退出的 <a> 链接如下:
<a href="javascript:;" id="btnLogout">
	<span class="iconfont icon-tuichu"> </span>
	退出
</a>
  1. 实现退出功能:
  // 点击按钮,实现退出功能
  $('#btnLogout').on('click', function() {
   
    // 提示用户是否确认退出
    layer.confirm('确定退出登录?', {
    icon: 3, title: '提示' }, function(index) {
   
      //do something
      // 1. 清空本地存储中的 token
      localStorage.removeItem('token')
      // 2. 重新跳转到登录页面
      location.href = '/login.html'

      // 关闭 confirm 询问框
      layer.close(index)
    })
  })
})

1.5 控制用户的访问权限

  1. 在调用有权限接口的时候,指定 complete 回调函数:
    重点!!!! 不论成功还是失败,最终都会调用 complete 回调函数!!!!
     complete: function(res) {
   
       // console.log('执行了 complete 回调:')
       // console.log(res)
       // 在 complete 回调函数中,可以使用 res.responseJSON 拿到服务器响应回来的数据
       if (res.responseJSON.status === 1 && res.responseJSON.message === '身份认证失败!') {
   
         // 1. 强制清空 token
         localStorage.removeItem('token')
         // 2. 强制跳转到登录页面
         location.href = '/login.html'
       }
     }
  })
}

1.6 优化权限控制的代码(ajaxPrefilter 函数总结)

  1. 将权限控制的代码,从每个请求中,抽离到 ajaxPrefilter 中: (baseAPI.js 代码总结)
 注意:每次调用 $.get() 或 $.post() 或 $.ajax() 的时候,
      会先调用 ajaxPrefilter 这个函数
// 在这个函数中,可以拿到我们给Ajax提供的配置对象
$.ajaxPrefilter(function(options) {
   
  1. 在发起真正的 Ajax 请求之前,统一拼接请求的根路径
  // options.url = 'http://ajax.frontend.itheima.net' + options.url
  options.url = 'http://www.liulongbin.top:3007' + options.url

  2. 统一为有权限的接口,设置 headers 请求头
  if (options.url.indexOf('/my/') !== -1) {
   
    options.headers = {
   
      Authorization: localStorage.getItem('token') || ''
    }
  }

  3. 全局统一挂载 complete 回调函数
  options.complete = function(res) {
   
    // console.log('执行了 complete 回调:')
    // console.log(res)
    // 在 complete 回调函数中,可以使用 res.responseJSON 拿到服务器响应回来的数据
    if (res.responseJSON.status === 1 && res.responseJSON.message ==
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值