页面刷新后的cookie计数为零,并且使用url重写进行角度路由

问题描述 投票:6回答:2

我正在使用.net core 2.0和angular 4的角度Spa模板。

页面刷新后,我的cookie数量为零。事实上,在刷新页面后,我在HttpContext中没有得到任何东西。

这是我在浏览器中的cookie。 enter image description here

如果我使用角度系统菜单,它工作正常。

现在,这是我在后端获取cookie的代码。

    private string GetCookie(HttpContext httpContext, string cookieName)
    {
        var rqstCookie = httpContext.Request.Cookies[cookieName];

        return !string.IsNullOrEmpty(rqstCookie) ? rqstCookie : null;
    }

一个重要的事情是,当我点击菜单时,它会加载组件和服务文件,然后它向C#controller请求所有标题和选项。但是当我刷新页面时,整个过程都会被跳过,所以我认为这些选项不会传递到后端,这就是为什么我的cookie是空的。

在我的其他应用程序中,我已经使用url重写同样的问题,它在那里工作,但在这里,因为这个应用程序是角度spa模板,url重写不起作用。

我也尝试设置url重写,就像我在旧应用程序中所做的那样,但它给了我错误。这是我遵循的url重写模块的链接。 https://stackoverflow.com/a/26152011/5816119

我已将Cookie更新为Session Cookie,但它也无效。

你能指导我如何获取所有的cookie和其他数据,即使用户刷新页面。谢谢...

angular single-page-application asp.net-core-2.0 spa-template
2个回答
4
投票

这是一个有棱角的问题。

当我在路由模块中添加APP_BASE_HREF时,它突然开始工作了。

https://stackoverflow.com/a/34535256/5816119

这是我的代码,

import { APP_BASE_HREF } from "@angular/common";

export const sharedConfig: NgModule = {
    bootstrap: [ AppComponent ],
    declarations: [
        AppComponent,
        ...
        ],
    imports: [
        HttpModule,
        ...,
        RouterModule.forRoot([
            { path: "", redirectTo: "home", pathMatch: "full" },
            { path: "**", redirectTo: "home" }
        ], { useHash: true }),
    ],
    providers: [
        { provide: APP_BASE_HREF, useValue: '/' },
    ],
};

所以,它基本上是路由器端的哈希技术,似乎我在我的应用程序中也缺少这个提供程序。


3
投票

尝试在编写cookie时使用此代码指定cookie何时到期

 option.Expires = DateTime.Now.AddDays(x);

 Response.Cookies.Append(cookiename, cookievalue, option);

你可以将AddDays(x)修改为你想要的天数

© www.soinside.com 2019 - 2024. All rights reserved.