所以我有一个标题组件,显示用户名或"登录",具体取决于他们是否登录.我还有一个Login组件,它执行登录的所有业务逻辑.它们目前没有父/子关系.
当用户登录时,除非在浏览器中完成整页刷新,否则标题不会刷新或更改.我一直在网上搜索和阅读有关不同方法的大量搜索.ngOnChanges,NgZone,ApplicationRef和ChangeDetectorRef似乎是最受欢迎的.我正在尝试在ChangeDetectorRef中实现此行为,因为这似乎与我的情况最相关.但是,我似乎无法找到如何使用它的实际示例.
我把它编码了,但它似乎没有做任何事情.任何意见,将不胜感激.我甚至接受我采取错误的方法,除了ChangeDetectorRef之外还需要使用另一种解决方案.
LoginComponent
import { Component, OnInit } from '@angular/core';
import { Response } from '@angular/http';
import { Router } from '@angular/router';
import { AuthenticationService } from '../service/authentication.service';
@Component({
selector: 'login-component',
templateUrl: './login.component.html'
})
export class LoginComponent implements OnInit {
constructor(private router: Router,
private authenticationService: AuthenticationService) { }
ngOnInit() {
// Resets the login service.
// This is one of the events that should cause the refresh.
this.authenticationService.logout();
}
login() {
/*
Authentication code
This is the other event …Run Code Online (Sandbox Code Playgroud) 我有一个在我的本地环境中正确运行HTTPS的网站.当我将其上传到AWS时,它只会超时或重定向.
我在AWS中的设置是一个Elastic Beanstalk应用程序,一个运行MS SQL的RDS数据库,我添加了一个Load Balancer来转发HTTPS请求,我有一个正确分配给Load Balancer的SSL证书.从我可以告诉我的应用程序正在运行,实际上,实体框架已启动并在我的RDS实例中正确构建了我的数据库.我无法通过互联网访问该网站.
我尝试过以不同的方式设置听众.如果我像这样设置它们,它只是永远重定向:

我的Startup.cs中有默认的HTTP/HTTPS端口转发代码:
public void ConfigureServices(IServiceCollection services)
{
// Sets all calls to require HTTPS: https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// Force all HTTP requests to redirect to HTTPS: https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl
var options = new RewriteOptions().AddRedirectToHttps();
app.UseRewriter(options);
...
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto
});
...
}
Run Code Online (Sandbox Code Playgroud)
我花了好几天时间才开始工作.我已经尝试取出所有的HTTPS代码,但这不起作用.我已经尝试过像这样和这样的博客的代码解决方案,但这也无效.根据我的阅读,Load Balancer最终处理HTTPS请求,然后将HTTP请求转发给我的应用程序.但我不知道如何正确处理,仍然强制执行HTTPS,并将HTTP重定向到HTTPS.
这似乎是没有一堆设置就可以开箱即用的东西.如果不是,我认为现在很多其他人都会遇到这个问题,并且在互联网上会有关于它的信息.我错过了一些小事吗?因为我完全在我的智慧结束.
如果你能回答这个问题,那么你将成为我的新英雄.
https amazon-web-services amazon-elastic-beanstalk .net-core asp.net-core
所以我已经在C#工作了很多年,现在正在使用Java.在C#中,您可以使用internal关键字从公共视图中隐藏类/方法,但如果您特别授予它,则允许某些程序集/包访问.当我环顾Java时,我看不到任何与内部直接相同的东西.
我发现了包私有.然而,这使它完全隐藏在外面的世界.Java中是否有一种方法允许某些其他包访问内部代码而不将其公开?
如果你问为什么我会这样做,这个答案通常是单元/集成测试,或者需要让某些可信任的包访问代码而不是重复它.我知道有些人认为你不应该测试私有/内部代码.我也知道允许内部访问通常不是很好的软件工程.我对这些话题的讨论并不感兴趣,只是好奇你是否可以做我想做的事情.
谢谢.
因此,我一直在尝试设置 ASP.NET Identity 2.2.1,但一直遇到障碍。作为应该由框架自动生成的东西,配置起来确实很复杂。我想我已经快完成了,但在使用简单注入器设置 IoC 时仍然遇到问题。
我一直在阅读有关这些问题的其他 StackOverflow 问题和博客。其中大多数看起来已经过时了,因为它们处理的是 ASP.NET Identity 1.0。从 2.0 到 2.2.1 甚至有足够的变化,我遇到了一些过时解决方案的问题。或者这些解决方案涉及其他 IoC 框架,但我无法将它们转换为简单注入器。我使用过其他 IoC 框架,但我是简单注入器的新手。
更新- Ric .Net 在他的评论中的第一个链接非常有帮助。我已经重新格式化了我的工作以适应他的建议,我想我已经快完成了。但我仍然有一个问题。我已完成用下面的代码替换以前的代码。
1)我更新了ApplicationDbContext:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(string connectionstring)
: base(connectionstring, throwIfV1Schema: false)
{
}
}
Run Code Online (Sandbox Code Playgroud)
2)我从ApplicationUserManager中删除了 Create() 方法,并将其移至一个初始化所有简单注入器代码的类中:
public static class SimpleInjectorInitializer
{
public static Container Initialize(IAppBuilder app)
{
var container = GetInitializeContainer(app);
container.Verify();
DependencyResolver.SetResolver(
new SimpleInjectorDependencyResolver(container));
return container;
}
public static Container GetInitializeContainer(
IAppBuilder app)
{ …Run Code Online (Sandbox Code Playgroud) c# ×2
.net-core ×1
angular ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
https ×1
internal ×1
java ×1
typescript ×1