我正在尝试在 OWIN 的帮助下使用 OAuth 2 和 Bearer Token 在 Web API 2 解决方案中实现双因素身份验证 (2FA)。我知道使用 Bearer Token 的 2FA 不是标准工作流程,但有人成功地做到了这一点吗?
基本上,我有两种情况需要满足:
用户凭据正确且不需要 2FA,因此返回完整的授权令牌。我已经完成并正常工作,并且可以使用具有 [Authorize] 属性的 Web API 控制器中的方法。
用户凭据是正确的,但需要 2FA,因此我想返回一个不授予他们完全访问权限的有效令牌,因此具有 [Authorize] 属性的 Web API 控制器中的方法不允许访问。
成功输入安全代码后,我想像上面的场景 1 一样生成一个新的完整的不记名令牌并返回该令牌,以提供完全授权的访问权限。
我正在使用 Identity 2 创建安全代码并通过电子邮件发送代码,这工作正常,但我正在努力解决的领域是覆盖的 GrantResourceOwnerCredentials 方法,以满足上述两种情况。任何信息或代码示例将不胜感激。
场景 我们有一台运行 Ubuntu Server 16.04 和 Docker 的服务器。每天,在一天结束时,我们必须关闭我们的服务器(公司的政策..)并在第二天再次打开它们。
我们通过远程(ssh)向服务器发送关闭标志来关闭服务器。
问题 我相信容器没有正常关闭,因为我注意到像 MySql 这样的容器有时会在恢复模式下启动,我们甚至还会收到一些损坏的文件。
问题 Docker 如何处理来自主机的关闭标志?它会向每个容器发送停止信号,还是会杀死所有容器?
我们如何防止此类问题再次发生?在关闭主机之前,我们是否应该编写一个脚本来向所有容器发送 docker stop 命令?
当我从下拉列表中选择数量时,我正在计算数量的基础上它会改变但总量Textformfield保持不变,当我调试代码时,我在setState方法中更新了数量但没有反映在 UI 上,我也在更新总量从该方法中的另一种方法开始工作。
class _ProductDetailsPageState extends State<ProductDetailsPage> {
List _quantity = ["1", "2", "3", "4", "5"];
List<DropdownMenuItem<String>> _dropDownQuantity;
String _currentQuantity;
String _productprice;
double _taxrateamt;
double _taxper = 0.0;
String _producttotal;
int _productqty;
double _discount = 3.0;
String _productname;
List<DropdownMenuItem<String>> getDropDownQuantity() {
List<DropdownMenuItem<String>> items = new List();
for (String city in _quantity) {
items.add(new DropdownMenuItem(
value: city,
child: new Text(
city,
style:
TextStyle(color: MyColors.colorPrimary, fontFamily: 'semibold'),
)));
}
return items;
}
@override
void initState() {
super.initState();
_dropDownQuantity …Run Code Online (Sandbox Code Playgroud) 如何在颤振图表中应用线性渐变?
我尝试过颜色类,但我只能应用纯色,无法找到在图形栏中使用渐变的方法。
chart.Series<Person,String>(
id:"Person3",
colorFn:(_,__)=>chart.MaterialPalette.red.shadeDefault,
domainFn: (Person dataPoint, _)=>dataPoint.name,
measureFn: (Person dataPoint, _)=>dataPoint.no,
data:data2,
)
Run Code Online (Sandbox Code Playgroud)
为我提供一些应用线性渐变的方法
我正在尝试制作自定义时间线视图,面对文本和圆圈对齐的问题。
编码
Widget orderTimeLine() {
return Container(
decoration: BoxDecoration(color: Colors.white),
margin: EdgeInsets.only(
bottom: SizeConfig.safeBlockHorizontal * 3,
),
padding: EdgeInsets.only(
top: SizeConfig.safeBlockHorizontal * 3,
left: SizeConfig.safeBlockHorizontal * 7,
bottom: SizeConfig.safeBlockHorizontal * 3,
),
child: Column(
children: <Widget>[
timelineRow("Order Confirmed", orderDateTime),
timelineRow("Order Inprocess", orderDateTime),
timelineRow("Order Processed", ""),
timelineRow("Order Shipped", ""),
timelineLastRow("Order Delivered", ""),
],
),
);
}
Widget timelineRow(String title, String subTile) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Expanded(
flex: 1,
child: Column(
// mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: …Run Code Online (Sandbox Code Playgroud) DropDownButton每当我ListView.Builder从下拉列表中选择时,它都会给出更改值,但不会反映在用户界面上。
List _warranty = ["NONE","1 YEAR", "2 YEAR"];
List<DropdownMenuItem<String>> getDropDownWarranty() {
List<DropdownMenuItem<String>> items = new List();
for (String str in _warranty) {
items.add(new DropdownMenuItem(
value: str,
child: new Text(
str,
style: TextStyle(color: Colors.white, fontFamily: 'semibold'),
)));
}
return items;
}
Run Code Online (Sandbox Code Playgroud)
这是我的ListView项目小部件
Widget item(AsyncSnapshot<CartBean> snapshot, int index) {
String _current = "";
return Column(
children: <Widget>[
Container(
height: 40,
decoration: BoxDecoration(color: MyColors.cartback),
child: Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(
width: SizeConfig.screenWidth / …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 PHP 在 mongo db 中实现类似 MySQL 的查询,但我不知道该怎么做。
select * from stud where name like "%abc%"
Run Code Online (Sandbox Code Playgroud)
php代码:
$regex = new \MongoDB\BSON\Regex("^(.*?(\abc\b)[^$]*)i$");
$result = $db->stud->find(array('name' => $regex));
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个
$result = $db->stud->find(( { name : { $regex: '*.abc.*'} } ));
Run Code Online (Sandbox Code Playgroud) InputDecoration图标下方不显示下划线TextFormField
TextFormField(
obscureText: true,
style: TextStyle(color: Colors.white),
keyboardType: TextInputType.text,
//validator: validatePassword,
decoration: InputDecoration(
icon: Icon(Icons.lock_outline,color: Colors.white,),
labelStyle: new TextStyle(color: Colors.white),
enabledBorder: UnderlineInputBorder(
borderSide: new BorderSide(color: Colors.white)),
hintStyle: new TextStyle(
inherit: true,
fontSize: 18.0,
fontFamily: "WorkSansLight",
color: Colors.white,
),
hintText: 'PASSWORD'),
onSaved: (String val) {
},
),
Run Code Online (Sandbox Code Playgroud)
得到这个:
预期的:
我试图通过使用来创建椭圆形,Radius.circular但它看起来像圆形,我也尝试过改变Radius.elliptical但仍然得到不同的形状。
Expanded(
flex: 13,
child: Container(
height: 100,
width:100,
margin: EdgeInsets.only(top: 40,left: 40,right: 40),
decoration: new BoxDecoration(
color: MyColors.colorPrimary,
border: Border.all(color: Colors.black, width: 0.0),
borderRadius:
new BorderRadius.all(Radius.elliptical(90,45)),
),
child: Text(' '),
),
Run Code Online (Sandbox Code Playgroud)
我要这个
但得到这个
在设计中,我使用Expanded将屏幕分为三部分,但在第二部分中,textfield当用户尝试输入某些像素溢出设计时,我一直在尝试使用SingleChildScrollViewExpanded与容器小部件一起使用,以消除渲染问题但我的设计消失了。
return Scaffold(
body: Stack(
children: <Widget>[
Container(
decoration: _buildBackground(),
),
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
flex: 13,
//child:_toolBar('VENUE LOGIN')
child:MyWidget(headerText: 'Player Option',)
),
Expanded(
flex: 70,
child: Container(
margin: EdgeInsets.only(top: width*0.03),
decoration: BoxDecoration(color: Colors.transparent),child: PlayerOptionContainer(),),
),
Expanded(
flex: 17,
child: _bottomView1(width),
),
],
)
],
),
);
Run Code Online (Sandbox Code Playgroud)
PlayerOptionWidget方法
Widget PlayerOptionContainer(){
return Column(
children: <Widget>[
Expanded(flex:25,
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(flex: 30,child: _logoContainer(width),),
Expanded(flex: 70,child: searchContainer(),),
],),), …Run Code Online (Sandbox Code Playgroud)