小编Ben*_*Ben的帖子

Angular2获取url查询参数

我正在为我的Angular2网络应用程序设置Facebook注册.一旦应用程序通过Facebook接受(在重定向到Facebook授权页面后),它将重定向到我的webapp,其令牌和代码为url params:

http://localhost:55976/?#access_token=MY_ACCESS_TOKEN&code=MY_CODE
Run Code Online (Sandbox Code Playgroud)

但是一旦页面加载,params就被删除了.网址变为:

http://localhost:55976/
Run Code Online (Sandbox Code Playgroud)

如何在删除参数(access_token和代码)之前将其提取出来?我的路由配置包含:

{ path: 'login', component: LoginComponent },
{ path: 'login/:access_token/:code', component: LoginComponent },
Run Code Online (Sandbox Code Playgroud)

编辑:

以下是我在login.component中重定向到facebook的方式:html:

<a class="btn btn-social btn-facebook socialaccount_provider facebook" title="Facebook" href="#" (click)="login_facebook()">
    <span class="fa fa-facebook"></span> <span style="padding-left:25px">Sign in with Facebook</span>
</a>
Run Code Online (Sandbox Code Playgroud)

打字稿:

login_facebook() {
    let url = 'https://www.facebook.com/dialog/oauth?'+
        'client_id=my_client_id' +
        '&redirect_uri=' + encodeURIComponent('http://localhost:55976/#/login/') +
        '&response_type=code%20token';
    console.log(url);
    window.location.href = url;
}
Run Code Online (Sandbox Code Playgroud)

facebook api重定向到http:// localhost:55976 /#/ login /,这是我尝试获取access_token和代码参数的地方.

编辑2:

如果我删除重定向网址中的锐利,facebook会将我重定向到好的网址,但没有锐利,有角度无法解析网址.

在删除'#'之前:

redirect_uri: http://localhost:55976/#/login/
facebook return: http://localhost:55976/?#access_token=MY_ACCESS_TOKEN&code=MY_CODE
Run Code Online (Sandbox Code Playgroud)

删除'#'后:

redirect_uri: http://localhost:55976/login/
facebook return: http://localhost:55976/login/?#access_token=MY_ACCESS_TOKEN&code=MY_CODE
Run Code Online (Sandbox Code Playgroud)

这意味着问题来自尖锐的问题.但没有尖锐,角度返回HTTP错误404.0 …

parameters url routing angular

25
推荐指数
2
解决办法
4万
查看次数

如果已安装旧版本,则创建将执行更新的安装程序

我正在尝试为我的软件配置Inno设置(这是ac#软件).我计划发布我的软件的许多版本,如果我的应用程序的旧版本已经安装在计算机上,我想更改inno安装程序安装程序界面.在这种情况下,用户不应该能够更改安装目录.

有四种情况:

第一种情况:这是我的产品的第一次安装,inno设置应该正常进行.

第二种情况:产品已全部安装,安装程序包含较新版本.用户无法选择目标文件夹.他可以运行更新.

第三种情况:如果安装程序包含的版本低于安装的版本,则将禁用更新并显示消息.

第四种情况:安装程序版本与安装版本相同.如果需要,用户可以修复他的执行版本.

InnoSetup可以做到这一点吗?

inno-setup updates

19
推荐指数
2
解决办法
3万
查看次数

填充矩形的外部

我想在WPF(通过代码)中绘制一个矩形并填充它的外部.

这是一个例子:

在此输入图像描述

矩形的外部是灰色的(低不透明度),矩形的填充是透明的.

.net c# wpf rectangles fill

10
推荐指数
1
解决办法
3345
查看次数

从XML生成类:找不到xsd.exe

我想从XML文件生成类.我尝试使用命令提示符,但无法找到xsd函数,我收到此消息:

'xsd'未被识别为内部或外部命令

我也尝试过这种方式:http://msdn.microsoft.com/en-us/library/hh371548%28v=vs.110%29.aspx 但是我没有"选择性粘贴"菜单.

如何安装XSd命令?(我的.NET Framework是最新版本,我的版本是4.5)如何添加"过去特殊"菜单?我在VS Ultimate 2012上工作

c# xml xsd class visual-studio

8
推荐指数
1
解决办法
6734
查看次数

Angular2从JSON解析到对象

我正在尝试找到将json对象转换为Typescript对象的最佳方法.我有一个http get服务,它返回一个用户列表.我当前的版本工作,我已经从JSON函数添加到我的所有模型类,以使映射工作:

export class User {

    constructor(
        public pk: number,
        public username: string,
        public first_name: string,
        public last_name: string,
        public email: string,
        public profile: UserProfile, ) {
    }

    static fromJSON(json: any): User {
        let user = Object.create(User.prototype);
        Object.assign(user, json);
        user.profile = UserProfile.fromJSON(json.profile);
        return user;
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好用.但是我在角度2文档中没有得到一些东西.在英雄教程中,JSON以这种方式自动转换为对象:

  getHeroes (): Observable<Hero[]> {
    return this.http.get(this.heroesUrl)
                    .map(this.extractData)
                    .catch(this.handleError);
  }
  private extractData(res: Response) {
    let body = res.json();
    return body.data || { };
  }
Run Code Online (Sandbox Code Playgroud)

我无法让这种方法适用于我的情况,我说这body.data是未定义的.这种方法真的有效吗?

编辑:

我的http服务不返回用户数组.它返回一个页面,其中包含"results"属性中的一组用户.

{
  "count": 2,
  "next": null, …
Run Code Online (Sandbox Code Playgroud)

json casting object angular

8
推荐指数
1
解决办法
2万
查看次数

django gunicorn sock文件不是由wsgi创建的

我在我的数字海洋服务器(Ubuntu 16.04)中有一个基本的django休息应用程序,它具有本地虚拟环境.基本的wsgi.py是:

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "workout_rest.settings")

# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)
Run Code Online (Sandbox Code Playgroud)

我一步一步地按照本教程进行操作:https: //www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04

当我用这个命令测试Gunicorn服务项目的能力时:gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application一切正常.

所以我试图设置Gunicorn使用systemd服务文件.我的/etc/systemd/system/gunicorn.service文件是:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=ben
Group=www-data
WorkingDirectory=/home/ben/myproject
ExecStart=/home/ben/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/ben/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target …
Run Code Online (Sandbox Code Playgroud)

python django nginx gunicorn

7
推荐指数
2
解决办法
2万
查看次数

Angular 2接口用于服务

我想开发一个搜索组件.以下是用例:

  1. 此组件使用搜索的术语参数调用服务.
  2. 该服务调用api端点并将结果对象作为集合返回.
  3. 组件在模板中显示结果.

我想只编写一个能够根据具体情况调用不同服务的搜索组件.想象一下,我有两个服务:

  1. SearchInMaleEmployeeService
  2. SearchInFemaleEmployeeService

这两种服务都实现了返回员工列表的搜索功能.我想根据具体情况告诉我的组件哪个服务.在C#中,我们可以使用interface告诉组件构造函数使用哪个服务.

我怎么能在Angular2中做到这一点?

额外问题:如何根据服务返回的对象类型向我的组件说出用于呈现搜索结果的模板?

service interface angular

7
推荐指数
1
解决办法
7657
查看次数

子子域被 NGINX 中的子域覆盖

我有一台带有 Nginx 的服务器。我想建立两个网站:

  • backend.mysite.com
  • staging.backend.mysite.com

这是我的服务器块配置:

www.backend.mysite.com:

server {
        listen   80;
        server_name backend.mysite.com www.backend.mysite.com;
        location / {
                proxy_pass http://127.0.0.1:8800/; 
        }
}

server {
    listen 8800;
    server_name my.ip.address;
    root /projects/backend/production/html;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }        
}
Run Code Online (Sandbox Code Playgroud)

www.staging.backend.mysite.com:

server {
        listen   80;
        server_name staging.backend.mysite.com www.staging.backend.mysite.com;
        location / {
                proxy_pass http://127.0.0.1:8900/; 
        }
}

server {
    listen 8900;
    server_name my.ip.address;
    root /projects/backend/staging/html;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }        
}
Run Code Online (Sandbox Code Playgroud)

我的问题是 backend.mysite.com 覆盖了 staging.backend.mysite.com。如果我的地址上有子域,我如何对 Nginx 说永远不要覆盖? …

subdomain overriding nginx

7
推荐指数
1
解决办法
1627
查看次数

django rest auth 电子邮件验证

有人可以解释如何为 django rest auth 设置电子邮件验证吗?我的 settings.py 包含:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True   
ACCOUNT_USERNAME_REQUIRED = False
Run Code Online (Sandbox Code Playgroud)

我在我的 urls.py 中添加了这一行:

url(r'^accounts/', include('allauth.urls')),
Run Code Online (Sandbox Code Playgroud)

但是,当我注册此端点时:rest-auth/registration/,不会发送电子邮件,但会创建用户。发送电子邮件确认的好配置是什么?我必须有一个 SMTP 服务器吗?

编辑:(@McAbra 评论后)

显然,此设置无法发送电子邮件:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Run Code Online (Sandbox Code Playgroud)

它只在 Django 控制台输出中打印邮件。@McAbra 给出的设置运行良好。但是在生产环境中,用gmail发送验证邮件是个好习惯吗?我是否只是创建电子邮件这样的noreply.myapp@gmail.com吗?

编辑2:

我的另一个问题是发送的邮件是空的。该模板存在于site-packages\allauth\templates\account\email. 电子邮件标题是[http://localhost:8000/]但没有内容。我在 python 控制台中没有错误。任何的想法?

针对这一点的解决方案:

site-packages\allauth\templates\account\email 文件必须复制进去 your-app\templates\account\email

email django validation rest django-rest-auth

6
推荐指数
1
解决办法
6432
查看次数

解析并组织给定文件夹中所有文件的导入

我需要解决一组打字稿文件的所有缺失导入并组织导入(删除未使用的导入并对它们进行排序)。在 Visual Studio 2017 中,我使用智能感知添加导入(手动添加每个缺失的引用)并用于Ctrl+K,D组织导入。我需要对 700 个文件执行此操作。这就是为什么我正在寻找一种在整个文件夹(或整个项目)上运行这些命令的方法。我的项目是 Angular 项目,因此我正在使用 Visual Studio Code 或 Visual Studio 2017 寻找此解决方案。

import typescript visual-studio-code visual-studio-2017

6
推荐指数
1
解决办法
3013
查看次数