zoukankan      html  css  js  c++  java
  • ABP项目IDS4身份认证

    ABP项目IDS4身份认证

    准备工作:

    项目搭建:https://www.cnblogs.com/1285026182YUAN/p/15101794.html 

    vue 项目 与 abp 后端

     

    登录认证:

     打开vue-element-admin 项目 

    1. 找到登录方法 :src / view / login.vue 的 handleLogin 方法 ,方法名改为 uuLogin ,

    loginForm 参数定义为

          loginForm: {
            username: "admin",
            password: "1q2w3E*",
            client_id: "ABPProject_App",
            client_secret: "1q2w3e*",
            grant_type: "password",
          },

      

      handleLogin() {
          this.$refs.loginForm.validate((valid) => {
            if (valid) {
              this.loading = true;
              this.$store
                .dispatch("user/uuLogin", this.loginForm)
                .then(() => {
                  this.$router.push({
                    path: this.redirect || "/",
                    query: this.otherQuery,
                  });
                  this.loading = false;
                })
                .catch(() => {
                  this.loading = false;
                });
            } else {
              console.log("error submit!!");
              return false;
            }
          });
        },

     2. 修改vuex 中的登录方法 

    路径 src / store / modules / user.js 里面的 actions 中 增加 uuLogin 方法 

      uuLogin({
        commit
      }, data) {
        return new Promise((resolve, reject) => {
          userLogin(data)
            .then(response => {
              debugger;
              commit('SET_TOKEN', response.access_token)
              setToken(response.access_token)
              resolve()
            }).catch((error) => {
              reject(error)
            })
        })
      },

    3. 增加 api 接口调用

    路径  src / api / user.js 中 增加 uuLogin 方法 

    var qs = require('qs')

    export function uuLogin(data) {
      return request({
        baseURL: 'https://localhost:44325/connect/token',
        method: 'post',
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        },
        data: qs.stringify(data)
      })
    }

    安装qs插件

    cnpm install qs

    4. 在ABP后端配置 跨域 访问限制,项目:ABPProject.HttpApi.Host , 文件:appsettings.json

      "App": {
        "SelfUrl": "https://localhost:44325",
        "ClientUrl": "http://localhost:4200",
        "CorsOrigins": "https://*.ABPProject.com,http://localhost:4200,http://localhost:9527",
        "RedirectAllowedUrls": "http://localhost:4200,https://localhost:44307"
      },
      "ConnectionStrings": {
        "Default": "Server=localhost;Port=3306;Database=ABPProject;Uid=root;Pwd=123456;"
      },
      "AuthServer": {
        "Authority": "https://localhost:44325",
        "RequireHttpsMetadata": "false",
        "SwaggerClientId": "ABPProject_Swagger",
        "SwaggerClientSecret": "1q2w3e*"
      },
      "StringEncryption": {
        "DefaultPassPhrase": "cz8P67SpaeeA5FUK"
      }
    }

    5.  修改 request.js 接口 

    路径 src / utils / request.js 

    修改数据返回接口,增加状态判断。

    service.interceptors.response.use(
      response => {
        const res = response.data
        if (response.status == 200) {
          return res;
        }

    修改数据访问接口,增加 token 请求头

    service.interceptors.request.use(
      config => {
        if (store.getters.token) {
          // config.headers['X-Token'] = getToken()
          config.headers['Authorization'] =  'Bearer ' +getToken()
        }
        return config
      },
      error => { 
        console.log(error) // for debug
        return Promise.reject(error)
      }
    )

      此时可登录成功,并记录 access_token 

    6. 登录成功后,在permission.js文件中 会验证用户信息

     增加 获取用户信息的 接口

    路径 src / api / user.js 

    export function uuInfo() {
      return request({
        baseURL: 'https://localhost:44325/connect/userinfo',
        method: 'get'
      })
    }

     7. 修改 vuex 中的 获取用户信息方法  getInfo

      getInfo({
        commit,
        state
      }) {
        return new Promise((resolve, reject) => {
    
          uuInfo()
            .then(response => {
    
              let data = {
                roles: [response.role],
                name: response.name,
                avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
                introduction: 'I am a super administrator'
              }
    
              commit('SET_NAME', data.name)
              commit('SET_ROLES', data.roles)
              commit('SET_AVATAR', data.avatar)
              commit('SET_INTRODUCTION', data.introduction)
    
              resolve(data)
            }).catch(error => {
              reject(error)
            })
        })
      },

    登录成功。

    引用:https://www.cnblogs.com/xhznl/p/13508356.html

    引用:https://www.cnblogs.com/william-xu/p/11274431.html

    项目地址:https://gitee.com/wuxincaicai/abp

  • 相关阅读:
    函数二 10
    函数初识 09
    文件操作 08
    数据类型的补充 day07
    小数据池 深浅copy 集合
    python Mysql 多条件查询
    ElasticSearch Python 基本操作
    用PyInstaller把Python代码打包成单个独立的exe可执行文件
    python 编译EXE文件
    Git 创建新分支检查分支
  • 原文地址:https://www.cnblogs.com/1285026182YUAN/p/15190387.html
Copyright © 2011-2022 走看看