Vue单点登录控件代码分享
这里提供一个Vue单点登录的demo给大家参考,希望对想了解的朋友有一些帮助。
具体的原理大家可以查看我的上篇文章
vue实现单点登录的N种方式
废话不多少直接上代码
这里分两套系统,一是登录系统的主体端,我们所有子系统或者关联系统的登录流程,全部在这里完成

具体代码如下:
login.vue
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<button @click="handleLogin">点击登录</button>
<button @click="rethome">返回之前页面</button>
</div>
</template> <script>
import Cookies from 'js-cookie'
export default {
name: 'home',
data () {
return {
msg: '系统一:统一登录页面',
}
},
mounted(){
const token = Cookies.get('app.token');
if(token){
this.rethome();
}
},
methods: {
handleLogin() {
var token = this.randomString();
Cookies.set('app.token',token, { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名
if(Cookies.get('app.returl')){
Cookies.set('app.loginname','系统二', { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名
}else{
Cookies.set('app.loginname','系统一', { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名
}
this.rethome();
},
rethome(){
var returl = Cookies.get('app.returl');
if(returl){
Cookies.set('app.returl','', { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名
window.open(returl,"_parent");
}else{
this.$router.push("/");
}
},
randomString(e) {
e = e || 32;
var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678",
a = t.length,
n = "";
for (var i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a));
return n
}
}
}
</script> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
home.vue
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<h3>用户信息为:{{token}}</h3>
<h3>登录地点:{{loginname}}</h3>
<button @click="logout">登出</button>
</div>
</template> <script>
import Cookies from 'js-cookie' export default {
name: 'home',
data () {
return {
msg: '系统一主页面',
token:'',
loginname:''
}
},
mounted(){
const token = Cookies.get('app.token');
this.token = token;
const loginname = Cookies.get('app.loginname');
this.loginname = loginname;
console.log(token);
if(!token){
this.$router.push("/login");
}else{
this.rethome()
}
},
methods: {
logout(){
Cookies.set('app.token','', { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名
Cookies.set('app.loginname','', { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名
this.$router.go(0)
},
rethome(){
var returl = Cookies.get('app.returl');
if(returl){
Cookies.set('app.returl','', { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名
window.open(returl,"_parent");
}else{
}
},
}
}
</script> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
登录系统完成后,我们的步骤已经完成一半,接下来是调用端的组件制造及调用方法,这里给大家展示我的案例
控件代码
<template>
<div class="hello" v-show="false">
</div>
</template> <script>
import Cookies from 'js-cookie'
export default {
props:{
type:{
type:String,
default:'getdata'
}
},
name: 'home',
data () {
return {
token:'',
loginname:''
}
},
mounted(){
const token = Cookies.get('app.token');
this.token = token?token:'未登陆';
const loginname = Cookies.get('app.loginname');
this.loginname = loginname?loginname:'未登陆';
this.returnFun()
},
methods: {
returnFun(){
var data = {
token:this.token,
loginname:this.loginname
}
this.$emit("clickFun",data);
}
},
watch: {
'type': function (val) {
const token = Cookies.get('app.token');
this.token = token?token:'未登陆';
const loginname = Cookies.get('app.loginname');
this.loginname = loginname?loginname:'未登陆';
switch(val){
case 'login':
console.log(token);
if(token !=''){
this.returnFun();
}else{
Cookies.set('app.returl','本地路由', { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名
window.open('登陆系统地址',"_parent");
}
break;
case 'logout':
Cookies.set('app.token','', { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名
Cookies.set('app.loginname','', { expires: 1000, path: '/',domain: '.xxx,com' })//写上你的网站主域名;
this.token = '未登陆';
this.loginname ='未登陆';
this.returnFun();
break;
case 'getdata':
this.returnFun();
break;
}
}
}
}
</script> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
调用端代码案例如下:
<template>
<div class="hello">
<login @clickFun="returnFun" :type ="type"></login>
<h1>{{ msg }}</h1>
<h3>用户信息为:{{token}}</h3>
<h3>登录地点:{{loginname}}</h3>
<button @click="login">登陆</button>
<button @click="logout">登出</button>
</div>
</template> <script>
import Cookies from 'js-cookie'
import login from '@/pages/login' export default {
name: 'home',
data () {
return {
msg: '系统二:父组件页面',
token:'未登陆',
loginname:'未登陆',
type:'getdata',
}
},
mounted(){
},
methods: {
login(){
this.type = "login";
},
logout(){
this.type = "logout";
},
returnFun(value){
console.log(value,"子组件返回值")
const token = value.token;
this.token = token?token:'未登陆';
const loginname = value.loginname;
this.loginname = loginname?loginname:'未登陆';
}
},
components:{
login
}
}
</script> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
到这里,一个简易单点登录系统的搭建已经完成,大家可以照着这个思路,继续完善最终制作成对应的控件。
如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

Vue单点登录控件代码分享的更多相关文章
- ASP.NET登录控件延伸(个性化)
既然由登录控件涉及到了Membership,那么就不得不提到用户个性化Profile对象.个性化允许为用户保存特定的个性化信息到数据库中,因此它不同于ASP.NET状态管理之处在于可以永久性保存这些信 ...
- Vue表单控件绑定
前面的话 本文将详细介绍Vue表单控件绑定 基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.v-model本质上不过是语法糖,它负 ...
- vue单位文本控件与vue加密文本控件
vue单位文本控件: 使用方式: npm install dami-text-input --save 使用: <text-input v-model="test" :uni ...
- VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法。
原文:VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net ...
- JS组件系列——Bootstrap 树控件使用经验分享
前言:很多时候我们在项目中需要用到树,有些树仅仅是展示层级关系,有些树是为了展示和编辑层级关系,还有些树是为了选中项然后其他地方调用选中项.不管怎么样,树控件都是很多项目里面不可或缺的组件之一.今天, ...
- Vue#表单控件绑定
使用v-model 在表单控件上实现数据双向绑定. 单选:https://jsfiddle.net/miloer/bs49p0fx/ <input type="checkbox&quo ...
- ASP.NET登录控件login。
1.Login控件.通常情况下会出现3个核心元素.用户名文本框.密码输入框.提交凭证的按钮. 1>.比较重要的属性:CreateUserText属性:包含站点注册页的链接文本.CreateUse ...
- SheetOffice控件使用分享
1. 控件属性及说明 Template:套用的模板目录(套用模板会使用到) 模板中必须包含书签: Body,这个是在代码中写死了的,是把当前文档的内容插入到模板的Body书签中. 如果使用印章,必须 ...
- 共享MFC每周时间选择控件代码
自己写的周时间选择控件,原理就是在Static上用GDI画图. 支持选择每周内每一天内的任意时间段,可以任意拖动修改时间段,任意合并时间段 效果如下图: VS2012代码下载:https://gith ...
随机推荐
- FTP下载文件时拒绝登陆申请怎么办?
1.有时候用网页登陆FTP无法下载文件,如下图 2.这时候就需要用文件夹登陆FTP,(打开我的电脑,然后输入ftp://10.2.41.31.如下图 然后就可以下载文件了
- Mysql优化(出自官方文档) - 第一篇(SQL优化系列)
Mysql优化(出自官方文档) - 第一篇 目录 Mysql优化(出自官方文档) - 第一篇 1 WHERE Clause Optimization 2 Range Optimization Skip ...
- 老板防止我上班摸鱼,给我装了个chrome插件
<铁柱幻想的摸鱼生活> 9:30:到达公司,开开电脑,收拾一下办公桌 9:40:吃个早餐,接杯水(一定要多喝水,一个肾结石同事的出院后的衷心建议) 10:00:打开"技术网站&q ...
- CAS你知道吗?底层如何实现?ABA问题又是什么?关于这些你知道答案吗
CAS你知道吗?如何实现? 1. compareAndSet 在volatile当中我们提到,volatile不能保证原子语义,所以当用到变量自增时,如果用到synchronized会太"重 ...
- 12、关于系统cpu的计算
1.cpu核数和逻辑cpu: CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数: 总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 2.查看linux的cpu相关信 ...
- Linux 安装 git
安装方法参考:http://www.jb51.net/os/RedHat/149653.html 具体内容: 在安装Git之前,需要先安装一些依赖包,安装依赖包之前可以先检查下是否已经安装. shel ...
- Java并发之ReentrantReadWriteLock源码解析(二)
先前,笔者和大家一起了解了ReentrantReadWriteLock的写锁实现,其实写锁本身实现的逻辑很少,基本上还是复用AQS内部的等待队列思想.下面,我们来看看ReentrantReadWrit ...
- UVA 10887 set或hash
题意: 给出n个A串和m个B串,将这A串与B串连接(B接在A后面)可以生成n*m个AB串,求不同的AB串的数量 分析: set直接水过 #include <bits/stdc++.h> u ...
- POJ 1050 To the Max 枚举+dp
大致题意: 求最大子矩阵和 分析: 一开始想复杂了,推出了一个状态方程:d[i][j]=max(d[i][j-1]+-,d[i-1][j]+-).写着写着发现上式省略的部分记录起来很麻烦. 后来发现n ...
- ansible 任务执行
ansible 任务执行模式 Ansible 系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook: ad-hoc模式(点对点模式)• ad-hoc模式(点对点模式) 使用单个 ...