You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
2.9 KiB
132 lines
2.9 KiB
<template> |
|
<BlogHeader /> |
|
<div class="grid"> |
|
<div id="login"> |
|
<h3>登录账号</h3> |
|
<form> |
|
<div class="form-elem"> |
|
<span>账号: </span> |
|
<input |
|
v-model="username" |
|
type="text" |
|
placeholder="请输入用户名" |
|
/> |
|
</div> |
|
|
|
<div class="form-elem"> |
|
<span>密码: </span> |
|
<input |
|
type="password" |
|
v-model="password" |
|
placeholder="输入密码" |
|
autocomplete="true" |
|
/> |
|
</div> |
|
|
|
<div class="form-elem"> |
|
<button v-on:click.prevent="login">登录</button> |
|
</div> |
|
</form> |
|
</div> |
|
</div> |
|
<BlogFooter /> |
|
</template> |
|
|
|
<script> |
|
import { ref } from "vue"; |
|
import BlogHeader from "@/components/BlogHeader.vue"; |
|
import BlogFooter from "@/components/BlogFooter.vue"; |
|
import $ from "jquery"; |
|
import router from "@/router/index"; |
|
import { useStore } from 'vuex'; |
|
|
|
export default { |
|
name: "LoginView", |
|
components: { |
|
BlogHeader, |
|
BlogFooter, |
|
}, |
|
setup() { |
|
|
|
let username = ref(""); |
|
let password = ref(""); |
|
|
|
const store = useStore(); |
|
|
|
const login = () => { |
|
$.ajax({ |
|
url: "http://127.0.0.1:6789/api/token/", |
|
type: "POST", |
|
data: { |
|
username: username.value, |
|
password: password.value, |
|
}, |
|
success(resp) { |
|
// 将token保存到localStorage |
|
const storage = localStorage; |
|
const current = (new Date()).getTime(); |
|
const expiredTime = current + 24*3600*1000; |
|
storage.setItem('access_blog', resp.access); |
|
storage.setItem('refresh_blog', resp.refresh); |
|
storage.setItem('expired_time', expiredTime); |
|
storage.setItem('username_blog', username.value); |
|
$.ajax({ |
|
url: 'http://127.0.0.1:6789/api/user/' + username.value + '/', |
|
type: 'GET', |
|
success(resp){ |
|
// 保存该用户是否为管理员 |
|
storage.setItem("is_superuser_blog",resp.is_superuser); |
|
store.commit("updateIsSuperUser",JSON.parse(storage.getItem("is_superuser_blog"))); |
|
console.log(store.state); |
|
} |
|
}); |
|
|
|
console.log("登录时间: ",new Date().toLocaleString()); |
|
router.push({ name: "home" }); |
|
}, |
|
error(resp) { |
|
console.log(resp); |
|
}, |
|
}); |
|
}; |
|
|
|
return { |
|
username, |
|
password, |
|
login, |
|
}; |
|
}, |
|
}; |
|
</script> |
|
|
|
<style scoped> |
|
#grid { |
|
display: grid; |
|
grid-template-columns: 1fr 1fr; |
|
} |
|
|
|
#login { |
|
text-align: center; |
|
} |
|
.form-elem { |
|
padding: 10px; |
|
} |
|
input { |
|
height: 25px; |
|
padding-left: 10px; |
|
} |
|
button { |
|
height: 35px; |
|
cursor: pointer; |
|
border: none; |
|
outline: none; |
|
background: gray; |
|
color: whitesmoke; |
|
border-radius: 5px; |
|
width: 60px; |
|
} |
|
|
|
span { |
|
font-weight: bold; |
|
} |
|
</style>
|
|
|