Cookie path not settable using $cookies service #1786

Closed
kgj opened this Issue Jan 10, 2013 · 35 comments
@kgj
kgj commented Jan 10, 2013

When using the $cookies service, there is no easy way to set the path of the cookie to match every path on the domain.

On line 3137 of angular.1.0.2.js the path of all cookies created is set as self.baseHref()
When trying to write the same cookie from different paths this results in additional cookies being created due to the different path.

With no facility implemented to pass in a path, the path needs to be hard coded in order to be changed.

@alonbardavid alonbardavid added a commit to alonbardavid/angular.js that referenced this issue Apr 20, 2013
@alonbardavid alonbardavid feat(ngCookies): support passing path/expires attributes to cookies
$cookieStore service had no way to set cookie attributes (such as expires).
The api for $cookieStore.put and $cookieStore.remove now has a third argument-
options,which allows setting cookie attributes, or deleting cookies under a
specific path.
- to change the path and/or expiration date of a cookie, you can pass an
  options object as the third argument to cookies(name,value).
  the options object can override Path and Expires when adding a value.
  You can pass either path, expires,none or both.
- the path option is checked to be a string and be partial to window.location
  otherwise, the default path is used. (warning is logged)
- the expires option is checked to be a Date and in the future,
  otherwise no expiration is set. (warning is logged)
- you can now delete a cookie on a specific path by calling
  cookie(name,undefined,{path:x})

The $cookie service remains unchanged since supporting cookie attributes
would mean serious backward comptability issues.
Foundations were put in place to make supporting $cookie easier.
GENERIC TEST CHANGE:
To support checking cookie path, all unit-tests now run on path "/karma/tests"
Documentation was updated for both $cookie and $cookieStore with examples.

closes	#1786, #1320
BREAKING CHANGE: As part of the change, deleting a cookie  now deletes
   cookies set in multiple paths (and duplicate cookies if exists).
   Previously only cookies set in the / path were deleted.
   Since it is not intutive, if this change breaks someones code, it is
   probably as an accidental side-effect.
   It is reasonable to assume that most people actually wanted to delete the
   cookie even if it wasn't set in the same path (since they can see it).
   So while this is a breaking change, it fixes bad behaviour.
   If needed, you can delete the cookie in a specific path using $cookieStore.
a4ed23c
@mike-spainhower

👍

@nbolt
nbolt commented Aug 16, 2013

👍

@jaymes-bearden

Did this ever get accepted?

@odino
odino commented Oct 29, 2013

👍

@hd-deman

👍

@derfsubterfuge

👍

@HNygard
Contributor
HNygard commented Mar 18, 2014

👍

@andrezero

👍

@greengerong

We need this feature. +1

@maxtillich

+1

@petebacondarwin petebacondarwin self-assigned this Apr 9, 2014
@andyhorng

+1

@paveleremin

+1

@bdelaforest

+1

@heretge
Contributor
heretge commented May 16, 2014

+1

@hobarrera

👍

@krisivanov

+1

@battlesnake

+1

@bdelaforest

In the meantime you can use https://github.com/ivpusic/angular-cookie.

example :
ipCookie('cookie_key', data, { path: '/' });

@ansorensen

+1

@h2non
h2non commented Jul 2, 2014

+1
I've finally used angular-cookie

@Meligy
Meligy commented Jul 7, 2014

+1

@syamanaka syamanaka referenced this issue in auth0/auth0-angular Aug 3, 2014
Closed

Cookies are linked to the base href #59

@ajspera
ajspera commented Aug 11, 2014

To anyone looking to keep all cookie paths the same everywhere, adding <base href="/"> to the head tag of your html will make all cookie paths "/" and accessible at any path.

@chesleybrown

Thank you @ajspera. Can confirm your solution works.

@btford btford removed the gh: issue label Aug 20, 2014
@tenaciousRas

Did the documentation get updated? The proposed solution seems like a workaround. It's been a while since I had to use base href on a website. The last time I did I'm pretty sure it was a legacy situation on the server side and we couldn't have used this workaround without piles of money and time to rebuild the backend. Isn't the bug/feature request a better solution overall than the one accepted to close this issue?

@m2omou m2omou referenced this issue in lynndylanhurley/ng-token-auth Oct 30, 2014
Closed

set path to cookies #63

@toshipon
toshipon commented Nov 7, 2014

👍

@vfiebig
vfiebig commented Nov 7, 2014

+1

@selvakn
selvakn commented Nov 17, 2014

👍

@web2wire

+1

I have the opposite problem, I have a site at abc.xyz and I need cookies to be restricted to abc.xyz/a or abc.xyz/b etc so I need to be able to explicitly set the path of the cookies one level down from the base.

@dallasvogels

👍

@petebacondarwin petebacondarwin modified the milestone: 1.3.x, Backlog Dec 10, 2014
@lynndylanhurley lynndylanhurley referenced this issue in lynndylanhurley/ng-token-auth Dec 15, 2014
Closed

Use correct cookie module #77

@shahata shahata added a commit to shahata/angular.js that referenced this issue Dec 19, 2014
@shahata shahata feat($cookieStore): add options support for put method
Closes #8324, #3988, #1786, #950
73fccee
@shahata shahata added a commit to shahata/angular.js that referenced this issue Dec 19, 2014
@shahata shahata feat($cookieStore): add options support for put method
Closes #8324, #3988, #1786, #950
99beb32
@shahata shahata added a commit to shahata/angular.js that referenced this issue Dec 19, 2014
@shahata shahata feat($cookieStore): add options support for put method
Closes #8324, #3988, #1786, #950
1a8e225
@shahata shahata added a commit to shahata/angular.js that referenced this issue Jan 5, 2015
@shahata shahata feat($cookieStore): add options support for put method
Closes #8324
Closes #3988
Closes #1786
Closes #950
d456789
@lynndylanhurley lynndylanhurley referenced this issue in lynndylanhurley/ng-token-auth Jan 11, 2015
Closed

angular-cookies #91

@FraGoTe
FraGoTe commented Jan 28, 2015

👍

@afc163
afc163 commented Feb 2, 2015

👍

@jaoued
jaoued commented Feb 5, 2015

👍

@simonykq

+1

@shahata shahata added a commit to shahata/angular.js that referenced this issue Feb 28, 2015
@shahata shahata feat($cookieStore): add options support for put method
Closes #8324
Closes #3988
Closes #1786
Closes #950
4c27f2f
@shahata shahata added a commit to shahata/angular.js that referenced this issue Feb 28, 2015
@shahata shahata feat($cookieStore): add options support for put method
Closes #8324
Closes #3988
Closes #1786
Closes #950
86ebe06
@shahata shahata added a commit to shahata/angular.js that referenced this issue Feb 28, 2015
@shahata shahata feat($cookieStore): add options support for put method
Closes #8324
Closes #3988
Closes #1786
Closes #950
2225f46
@shahata shahata added a commit to shahata/angular.js that referenced this issue Mar 1, 2015
@shahata shahata feat($cookieStore): add options support for put method
Closes #8324
Closes #3988
Closes #1786
Closes #950
fa39098
@shahata shahata added a commit to shahata/angular.js that referenced this issue Mar 1, 2015
@shahata shahata feat($cookieStore): add options support for put method
Closes #8324
Closes #3988
Closes #1786
Closes #950
b5894ab
@shahata shahata added a commit to shahata/angular.js that referenced this issue Mar 2, 2015
@shahata shahata feat($cookies): allow passing cookie options
The `put`, `putObject` and `remove` methods now take an options parameter
where you can provide additional options for the cookie value, such as `expires`,
`path`, `domain` and `secure`.

Closes #8324
Closes #3988
Closes #1786
Closes #950
56c6352
@shahata shahata added a commit to shahata/angular.js that referenced this issue Mar 2, 2015
@shahata shahata feat($cookies): allow passing cookie options
The `put`, `putObject` and `remove` methods now take an options parameter
where you can provide additional options for the cookie value, such as `expires`,
`path`, `domain` and `secure`.

Closes #8324
Closes #3988
Closes #1786
Closes #950
553f883
@shahata shahata added a commit to shahata/angular.js that referenced this issue Mar 2, 2015
@shahata shahata feat($cookies): allow passing cookie options
The `put`, `putObject` and `remove` methods now take an options parameter
where you can provide additional options for the cookie value, such as `expires`,
`path`, `domain` and `secure`.

Closes #8324
Closes #3988
Closes #1786
Closes #950
7eb087c
@shahata shahata added a commit to shahata/angular.js that referenced this issue Mar 2, 2015
@shahata shahata feat($cookies): allow passing cookie options
The `put`, `putObject` and `remove` methods now take an options parameter
where you can provide additional options for the cookie value, such as `expires`,
`path`, `domain` and `secure`.

Closes #8324
Closes #3988
Closes #1786
Closes #950
0d734da
@shahata shahata added a commit to shahata/angular.js that referenced this issue Mar 2, 2015
@shahata shahata feat($cookies): allow passing cookie options
The `put`, `putObject` and `remove` methods now take an options parameter
where you can provide additional options for the cookie value, such as `expires`,
`path`, `domain` and `secure`.

Closes #8324
Closes #3988
Closes #1786
Closes #950
7ba78ce
@shahata shahata added a commit that closed this issue Mar 2, 2015
@shahata @petebacondarwin shahata + petebacondarwin feat($cookies): allow passing cookie options
The `put`, `putObject` and `remove` methods now take an options parameter
where you can provide additional options for the cookie value, such as `expires`,
`path`, `domain` and `secure`.

Closes #8324
Closes #3988
Closes #1786
Closes #950
92c366d
@shahata shahata closed this in 92c366d Mar 2, 2015
@hansmaad hansmaad pushed a commit to hansmaad/angular.js that referenced this issue Mar 10, 2015
@shahata shahata + hansmaad feat($cookies): allow passing cookie options
The `put`, `putObject` and `remove` methods now take an options parameter
where you can provide additional options for the cookie value, such as `expires`,
`path`, `domain` and `secure`.

Closes #8324
Closes #3988
Closes #1786
Closes #950
7f06ca9
@netman92 netman92 added a commit to netman92/angular.js that referenced this issue Aug 8, 2015
@shahata @netman92 shahata + netman92 feat($cookies): allow passing cookie options
The `put`, `putObject` and `remove` methods now take an options parameter
where you can provide additional options for the cookie value, such as `expires`,
`path`, `domain` and `secure`.

Closes #8324
Closes #3988
Closes #1786
Closes #950
a10e240
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment