Commit b92038c9 by T

登录块--弱密码整改,强制提示及账号加密请求

parent 963e445d
...@@ -26,6 +26,8 @@ ...@@ -26,6 +26,8 @@
"cnchar": "^3.2.2", "cnchar": "^3.2.2",
"codemirror": "^5.38.0", "codemirror": "^5.38.0",
"connect": "3.6.6", "connect": "3.6.6",
"crypto": "^1.0.1",
"crypto-js": "^4.1.1",
"echarts": "^4.1.0", "echarts": "^4.1.0",
"element-ui": "^2.15.6", "element-ui": "^2.15.6",
"file-saver": "1.3.8", "file-saver": "1.3.8",
...@@ -100,8 +102,8 @@ ...@@ -100,8 +102,8 @@
"url-loader": "1.0.1", "url-loader": "1.0.1",
"vue": "^2.6.14", "vue": "^2.6.14",
"vue-loader": "^15.9.7", "vue-loader": "^15.9.7",
"vue-template-compiler": "^2.6.14",
"vue-style-loader": "4.1.2", "vue-style-loader": "4.1.2",
"vue-template-compiler": "^2.6.14",
"webpack": "^4.41.2", "webpack": "^4.41.2",
"webpack-bundle-analyzer": "^3.6.0", "webpack-bundle-analyzer": "^3.6.0",
"webpack-cli": "^3.3.9", "webpack-cli": "^3.3.9",
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -3,7 +3,8 @@ import md5 from 'js-md5' ...@@ -3,7 +3,8 @@ import md5 from 'js-md5'
export function login(username, password, code, uuid) { export function login(username, password, code, uuid) {
return request({ return request({
url: 'auth/login', // url: 'auth/login',
url: 'auth/loginV2',//满足安全审计要求接口
method: 'post', method: 'post',
data: { data: {
username, username,
......
// 服务端提供密钥与偏移量
// 'key' => '0123456789abcdef'
// 'iv' => 'abcdef0123456789'
import CryptoJS from 'crypto-js'
const AES_KEY = '0123456789abcdef' // 密钥, AES-128 需16个字符, AES-256 需要32个字符
const AES_IV = 'abcdef0123456789' // 密钥偏移量,16个字符
const key = CryptoJS.enc.Utf8.parse(AES_KEY)
const iv = CryptoJS.enc.Utf8.parse(AES_IV)
// 加密
export function encrypt(data) {
const srcs = CryptoJS.enc.Utf8.parse(data)
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return encrypted.toString()
}
// 解密
export function decrypt(data) {
const decrypted = CryptoJS.AES.decrypt(data, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return CryptoJS.enc.Utf8.stringify(decrypted).toString()
}
\ No newline at end of file
...@@ -171,7 +171,23 @@ ...@@ -171,7 +171,23 @@
* @param {*} data * @param {*} data
* @returns * @returns
*/ */
// export function transform(data) {
// let k = {
// appKey: 'odykzzWm1GASj15K1AGxwQ==',
// orgId: '',
// version: '1.0',
// timestamp: parseInt(new Date().getTime()/1000),
// body: escape(JSON.stringify(data)),
// sign: md5('a1dca4cf35a6d460128f5e4ad401b1c1'+parseInt(new Date().getTime()/1000)+'1.0'+escape(JSON.stringify(data)))
// }
// return k;
// }
//统一加密处理--开关
export function transform(data) { export function transform(data) {
//isEncryption为0---加密,1----不加密
let isEncryption =0;
if(isEncryption == 0){
let k = { let k = {
appKey: 'odykzzWm1GASj15K1AGxwQ==', appKey: 'odykzzWm1GASj15K1AGxwQ==',
orgId: '', orgId: '',
...@@ -179,9 +195,14 @@ ...@@ -179,9 +195,14 @@
timestamp: parseInt(new Date().getTime()/1000), timestamp: parseInt(new Date().getTime()/1000),
body: escape(JSON.stringify(data)), body: escape(JSON.stringify(data)),
sign: md5('a1dca4cf35a6d460128f5e4ad401b1c1'+parseInt(new Date().getTime()/1000)+'1.0'+escape(JSON.stringify(data))) sign: md5('a1dca4cf35a6d460128f5e4ad401b1c1'+parseInt(new Date().getTime()/1000)+'1.0'+escape(JSON.stringify(data)))
} }
return k; return k;
} }
if(isEncryption == 1){
return data
}
}
export function downloadFile(obj, name, suffix) { export function downloadFile(obj, name, suffix) {
const url = window.URL.createObjectURL(new Blob([obj])) const url = window.URL.createObjectURL(new Blob([obj]))
......
...@@ -35,11 +35,13 @@ ...@@ -35,11 +35,13 @@
<span></span> <span></span>
<a href="http://www.beian.miit.gov.cn" target="_blank">{{ $store.state.settings.caseNumber }}</a> <a href="http://www.beian.miit.gov.cn" target="_blank">{{ $store.state.settings.caseNumber }}</a>
</div> --> </div> -->
<!-- <center ref="center"/> -->
</div> </div>
</template> </template>
<script> <script>
import { encrypt, decrypt } from '@/utils/rsaEncrypt' //import { encrypt, decrypt } from '@/utils/rsaEncrypt'
import { encrypt } from '@/utils/cryptoEncrypt'
import Config from '@/config' import Config from '@/config'
import { getCodeImg } from '@/api/login' import { getCodeImg } from '@/api/login'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
...@@ -52,9 +54,12 @@ import { getListOrgWarehouse } from '@/api/warehouse' ...@@ -52,9 +54,12 @@ import { getListOrgWarehouse } from '@/api/warehouse'
import { getAllListOrg } from '@/api/org' import { getAllListOrg } from '@/api/org'
import { getToken, setToken, removeToken } from '@/utils/auth' import { getToken, setToken, removeToken } from '@/utils/auth'
import { getMessageReminderLog } from '@/api/messageReminder' import { getMessageReminderLog } from '@/api/messageReminder'
// import center from '@/views/system/user/center'
import md5 from 'js-md5' import md5 from 'js-md5'
//import myTask from '@/views/dashboard/MyTask'
export default { export default {
name: 'Login', name: 'Login',
// components:[ center ],
data() { data() {
return { return {
LoginHeader: LoginHeader, LoginHeader: LoginHeader,
...@@ -131,6 +136,8 @@ export default { ...@@ -131,6 +136,8 @@ export default {
// } // }
//传MD5加密给登录后台 //传MD5加密给登录后台
user.password=md5(user.password) user.password=md5(user.password)
//账号加密传输---满足安全审计要求
user.username=encrypt(user.username)
if (valid) { if (valid) {
this.loading = true this.loading = true
if (user.rememberMe) { if (user.rememberMe) {
...@@ -144,8 +151,15 @@ export default { ...@@ -144,8 +151,15 @@ export default {
} }
this.$store.dispatch('Login', user).then(() => { this.$store.dispatch('Login', user).then(() => {
this.loading = false this.loading = false
this.$router.push({ path: this.redirect || '/' })
setTimeout(this.purchaseAlert , 2000) setTimeout(this.purchaseAlert , 2000)
if(user.password === 'e10adc3949ba59abbe56e057f20f883e'){
this.$router.push({path:'/user/center', query: { fromLoginPage: 'true' }});
}else{
this.$router.push({ path: this.redirect || '/' })
}
this.getOrgList() this.getOrgList()
}).catch((err) => { }).catch((err) => {
this.loading = false this.loading = false
...@@ -160,6 +174,7 @@ export default { ...@@ -160,6 +174,7 @@ export default {
return false return false
} }
}) })
}, },
purchaseAlert() { purchaseAlert() {
getMessageReminderLog({orgId: this.$store.state.user.user.baseJpOrganization.id}).then(res => { getMessageReminderLog({orgId: this.$store.state.user.user.baseJpOrganization.id}).then(res => {
......
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
</el-col> </el-col>
</el-row> </el-row>
<updateEmail ref="email" :email="user.email"/> <updateEmail ref="email" :email="user.email"/>
<updatePass ref="pass"/> <updatePass ref="pass" />
<update-location ref="location" /> <update-location ref="location" />
</div> </div>
</template> </template>
...@@ -126,6 +126,34 @@ export default { ...@@ -126,6 +126,34 @@ export default {
this.init() this.init()
}) })
store.dispatch('GetInfo').then(() => {}) store.dispatch('GetInfo').then(() => {})
//用于登录时弱密码:123456强制弹窗修改密码
//登录成功后传fromLoginPage== 'true'校验弹窗--修改密码,其它页面跳到该页不用弹窗
const fromLoginPage = this.$route.query.fromLoginPage;
if (fromLoginPage == 'true') {
this.$nextTick(() => {
// 在这里确保组件已经渲染完毕
if (this.$refs.pass) {
//console.log(1111)
// 确保 this.$refs.pass 存在
this.$watch(
() => this.$refs.pass.dialog, // watch the dialog property of this.$refs.pass
(value) => {
if (value === true) {
// when dialog changes to true, the dialog has finished rendering
this.$nextTick(() => {
this.$message({
message: '密码过于简单,请修改密码!!',
type: 'warning',
duration: 5000
});
});
}
}
);
this.$refs.pass.dialog = true; // 设置 dialog 属性
}
});
}
}, },
mounted() { mounted() {
if (this.$route.query.changePassword) { if (this.$route.query.changePassword) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论