後端管理系統開發(一):登錄篇

作爲後端程序員,想寫一個數據展示的系統,主要用於數據查詢、數據展示,當然也有登錄功能了,有沒有比較快的方式呢,於此,Vue-Admin-Pro便產生了,基於iView-Admin,進行簡化,爲後端程序員量身打造的極簡後端管理系統。

項目地址:vue-admin-pro

系列文章1:後端管理系統開發(一):登錄篇

系列文章2:後端管理系統開發(二):路由篇(敬請期待)

系列文章3:後端管理系統開發(三):數據表格篇(敬請期待)

系列文章4:後端管理系統開發(四):數據請求篇(敬請期待)

系列文章5:後端管理系統開發(五):表單篇(敬請期待)

搭建項目

項目進入正題,開始搭建項目。

第一步:使用 Git 拉取 vue-admin-pro 的代碼,地址:[email protected]:fengwenyi/vue-admin-pro.git

第二步:修改工程名,比如我們將工程名改爲vue-admin-pro-simple

第三步:使用 WebStorm 打開

第四步:修改配置,配置地址:/src/config/index.js

第五步:運行 npm install

第六步:運行 npm run dev

運行效果:

這裏有一個問題,因爲標題過長,大於預留的寬度,我們去修改一下登錄樣式:/src/view/Login/Login.less,將寬度改成 390px

.container {
  ...
  
  .content {
    width: 390px;
  }
}

修改之後的效果:

登錄

於此,算是搞定了項目搭建。首先我們不管什麼權限,來實現最基礎的登錄功能。所以,下面我們聊聊我們的登錄。

前端登錄的API代碼:

/**
 * 登錄
 * @param account
 * @param password
 */
export const login = (account, password) => {
  const data = {
    account,
    password
  }
  return axios.request({
    url: 'auth/login',
    method: 'post',
    dataType: 'json',
    headers: {
      'Content-Type': 'application/json; charset=UTF-8'
    },
    data: data
  })
}

我們注意以下幾點:

  • url地址,根據自己的情況進行修改
  • 提交方式
  • Headers,這裏添加了json
  • 參數 accountpassword

於此,我們可寫自己的後端的登錄接口,或者適當修改。

可以參見 vue-admin-pro-api

示例:

package com.fengwenyi.vueadminproapi.controller;

import com.fengwenyi.vueadminproapi.entity.Login;
import net.iutil.ApiResult;
import net.iutil.javalib.util.IdUtils;
import org.springframework.http.MediaType;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 認證
 * @author Erwin Feng
 * @since 2019-06-08 10:21
 */
@RestController
@RequestMapping(value = "/auth",
        consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
        produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class AuthController {

    // 登錄示例
    @PostMapping("/login")
    public ApiResult login(@RequestBody Login login) {
        String account = login.getAccount();
        String password = login.getPassword();
        if (StringUtils.isEmpty(account))
            return ApiResult.error().setMsg("賬號不能爲空");
        if (StringUtils.isEmpty(password))
            return ApiResult.error().setMsg("密碼不能爲空");
        if (!account.equals("admin"))
            return ApiResult.error().setMsg("賬號不存在");
        if (!password.equals("admin@1234"))
            return ApiResult.error().setMsg("密碼不正確");
        String uid = IdUtils.getIdByUUID();
        String token = IdUtils.getIdByUUID();
        // 可指定有效期
        // 可自定義策略保存uid、token
        // write code
        Map<String, String> map = new HashMap<>();
        map.put("token", uid + "_" + token);
        return ApiResult.success(map);
    }

    // 登出示例
    @GetMapping("/logout")
    public ApiResult logout(@RequestHeader String token) {
        // 清空token
        // write code
        
        // return
        return ApiResult.success();
    }

}

登錄成功,進入首頁

這裏有一個問題,因爲標題太長了,這裏採取的策略是,將標題超出的部分隱藏。

路徑: /components/main

class:maxAdminName

我這裏將字體調小

.main{
  .logo-con{
    ...
    
    .maxAdminName {
      font-size: 17px;
      ...
    }
  }
}

看一下效果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章