import React, { Component } from 'react';
import Particles from 'react-particles-js';
import { Form, Button } from 'antd';
import { connect } from 'react-redux';
import { setUserInfo } from '@/redux/actions/userInfo';
import '@/assets/css/login';
import * as Msal from 'msal'; //获取当前域名‘
var url = ''
function geturl() {
const href = window.location.href
console.log(href)
var reg = new RegExp(/(\w+):\/\/([^/:]+)(:\d*)?/)
let matchObj = href.match(reg)
url = matchObj[0]
// console.log(url,"--------url--------")
// // this.locationUrl = url
};
geturl()
//B2C登录
var appConfig = {
b2cScopes: ["https://XXX.onmschina.cn/api/demo.read"],//这些都要在B2C配置
webApi: "http://localhost:5000/hello"
};
// configuration to initialize msal
const msalConfig = {
auth: {
clientId: "", //This is your client ID
authority: "https://XXX.b2clogin.cn/XXX.onmschina.cn/B2C_1A_signup_signin_phone", //This is your tenant info
validateAuthority: false,
},
cache: {
cacheLocation: "localStorage",
storeAuthStateInCookie: true
}
}; // instantiate MSAL
const myMSALObj = new Msal.UserAgentApplication(msalConfig);
myMSALObj.handleRedirectCallback((error, response) => {
console.log(response, error)
if (response.idToken !== null) {
localStorage.setItem('isLogin', '1');
localStorage.setItem('menukey',[1]) localStorage.setItem('token', response.idToken.rawIdToken); window.location.href = url+"/#/dashboard"
}
else {
window.location.href = url+"/#/login"
} // handle redirect response or error
});
// request to signin - returns an idToken
const loginRequest = {
scopes: appConfig.b2cScopes
}; // request to acquire a token for resource access
const tokenRequest = {
scopes: appConfig.b2cScopes
}; const FormItem = Form.Item;
class Login extends Component {
state = { clientHeight: document.documentElement.clientHeight || document.body.clientHeight };
constructor(props) {
super(props);
this.onResize = this.onResize.bind(this);
} signIn() {
myMSALObj.loginRedirect(appConfig.b2cScopes)
}
componentDidMount() {
window.addEventListener('resize', this.onResize);
}
componentWillUnmount() {
window.addEventListener('resize', this.onResize);
// componentWillMount进行异步操作时且在callback中进行了setState操作时,需要在组件卸载时清除state
this.setState = () => {
return;
};
}
onResize() {
this.setState({ clientHeight: document.documentElement.clientHeight || document.body.clientHeight });
}
render() {
const { getFieldDecorator } = this.props.form;
return (
<div className="container">
<Particles
height={this.state.clientHeight - 5 + 'px'}
params={{
particles: {
line_linked: {
color: "#77a3fc",
},
color: {
value: "#77a3fc"
},
size: { value: 3 }
},
interactivity: {
events: {
onhover: { enable: true, mode: 'repulse' }
}
}
}}
/>
<div className="content1">
<div className="logo1"><img src='' /></div>
<div className="title1">欢迎使用ABB后台管理系统!</div>
<Form className="login-form"> <FormItem>
<Button className="button1" type="danger" htmlType="submit" block onClick={this.signIn}>
点击进入
</Button>
{/* <div style={{ color: '#999',paddingTop:'10px',textAlign:'center' }}>Tips : 输入任意用户名密码即可</div> */}
</FormItem>
</Form>
</div>
</div>
);
}
} const mapStateToProps = state => state;
const mapDispatchToProps = dispatch => ({
setUserInfo: data => {
dispatch(setUserInfo(data));
}
});
export default connect(
mapStateToProps,
mapDispatchToProps
)(Form.create()(Login));

Azure B2C登录,react-web端实现,自定义登录页面ui的更多相关文章

  1. IPMI相关漏洞利用及WEB端默认口令登录漏洞

    IPMI相关漏洞 0套件漏洞 使用0套件时,只需要Username,口令任意即可绕过身份鉴别执行指令.而且一般还有一个默认的账户admin或者ADMIN. 备注:IPMI是一套主机远程管理系统,可以远 ...

  2. web端调百度地图页面

    在点击进入地图的入口(下面数据是vue渲染的数据) <a class="navigation" v-if="merchant.longitude && ...

  3. Web Api跨域登录问题

    最近项目第一次尝试使用web api,照搬了一般mvc的Forms登录方式,在和前端对接的时候出现一个问题: 前端使用ajax调用登录接口完成登录后,再调用别的接口,被判断为未登录. 如果直接在浏览器 ...

  4. 【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法

    问题定义 使用Azure应用服务(App Service),部署Java应用,使用Tomcat容器,如何自定义错误页面呢?同时禁用DELETE, PUT方法 解决办法 如何自定义错误页面呢?需要在 J ...

  5. FineReport中如何自定义登录界面

    在登录平台时,不希望使用FR默认的内置登录界面,想通过自定义登录界面实现登录操作,内置登录界面如下图: 登录界面,获取到用户名和密码的值,发送到报表系统,报表服务带着这两个参数访问认证地址进行认证. ...

  6. 移动web端的react.js组件化方案

     背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近 ...

  7. react网页版聊天|仿微信、微博web版|react+pc端仿微信实例

    一.项目介绍 基于react+react-dom+react-router-dom+redux+react-redux+webpack2.0+nodejs等技术混合开发的仿微信web端聊天室react ...

  8. cas sso单点登录系列3_cas-server端配置认证方式实践(数据源+自定义java类认证)

    转:http://blog.csdn.net/ae6623/article/details/8851801 本篇将讲解cas-server端的认证方式 1.最简单的认证,用户名和密码一致就登录成功 2 ...

  9. 10行代码搞定移动web端自定义tap事件

    发发牢骚 移动web端里摸爬滚打这么久踩了不少坑,有一定移动web端经验的同学一定被click困扰过.我也不列外.一路走来被虐的不行,fastclick.touchend.iscroll什么的都用过, ...

  10. 技术实践丨React Native 项目 Web 端同构

    摘要:尽管 React Native 已经进入开源的第 6 个年头,距离发布 1.0 版本依旧是遥遥无期."Learn once, write anywhere",完全不影响 Re ...

随机推荐

  1. Java IO 流-- 文件拷贝

    IO流操作套路: 1.创建源: 2.选择流: 3.操作: 4.释放资源 上代码: package com.xzlf.io; import java.io.File; import java.io.Fi ...

  2. Python玩转人工智能最火框架 TensorFlow应用实践 学习 教程

    随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.而在昨天机器之心发起的框架投票中,2144 位参与者中有 1441 位都在使用 Tenso ...

  3. 算法笔记刷题3(codeup 5901)

    今天刷题的速度依旧很慢(小乌龟挥爪.jpg) 我觉得codeup5901中回文串的处理很妙,如果是我自己写的话可能会把数组直接倒过来和原来对比.按照对称规律进行比对的话,工作量可以减少一半. #inc ...

  4. 总结php删除html标签和标签内的内容的方法

    来源:https://www.cnblogs.com/shaoguan/p/7336984.html 经常扒别人网站文章的坑们:我是指那种批量式采集的压根不看内容的:少不了都会用到删除html标签的函 ...

  5. 源码安装nginx 方法二

    yum 仓库不能用大写字母 [root@oldboy conf.d]# gzip * 压缩当前目录下的所有文件 gzip ./* gzip . gzip./ # 关闭防火墙和selinux [root ...

  6. 【Linux常见命令】route命令

    route - show / manipulate the IP routing table route命令用于显示和操作IP路由表. route命令用来显示并设置Linux内核中的网络路由表,rou ...

  7. 15.Why lambda forms in python does not have statements?

    Why lambda forms in python does not have statements? A lambda form in python does not have statement ...

  8. mysql备份及恢复

    第四章:MySQL数据库的备份与恢复                            2016-09-30 00:58:05 标签:数据库备份 工作原理 数据库表 mysql source 原创 ...

  9. 记坑: ConfigurationProperties 和 RefreshScope

    为什么80%的码农都做不了架构师?>>>   当使用spring-cloud-config 和 spring-boot-configuration-processor时 使用bean ...

  10. 实战-MySQL定时增量备份(2)

    概要 引言 增量备份 恢复增量备份 定时备份 引言 在产品上线之后,我们的数据是相当重要的,容不得半点闪失,应该做好万全的准备,搞不好哪一天被黑客入侵或者恶意删除,那就 gg 了.所以要对我们的线上数 ...