text:
Q: Spring concurrent session control not working, user can login multiple times I use Spring 3.2 and Spring-security 3.1 along with jsf + primefaces and hibernate4 on Tomcat7
I wanted to add a concurrency control to limit users' session to one, and show and error message if he/she tries to login the second time. The problem is. I can login both in chrome and firefox. It does not prevent multiple login. You can see my security configuration. And logs produced at the time of first login and second login What is wrong is going on ?
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">

<security:http pattern="/resources/**" security="none" />
<security:http pattern="/authentication/**" security="none" />

<security:http auto-config='true'
    access-decision-manager-ref="accessDecisionManager">
    <security:intercept-url pattern="/pages/**"
        access="PRV_LOGIN" />
    <security:access-denied-handler
        error-page="/error/error.jsf" />
    <security:logout logout-success-url="/" logout-url="/logout"
        delete-cookies="JSESSIONID" />
    <security:form-login login-page='/login'
        login-processing-url="/logincheck" default-target-url="/home"
        always-use-default-target="true" />
    <security:session-management
        invalid-session-url="/login">
        <security:concurrency-control
            error-if-maximum-exceeded="true" max-sessions="1" expired-url="/login"
            session-registry-ref="sessionRegistry" />
    </security:session-management>
</security:http>

<security:authentication-manager>
    <security:authentication-provider
        user-service-ref="userSessionDetailsUtil">
        <security:password-encoder ref="passwordEncoderUtil">
            <security:salt-source user-property="username" />
        </security:password-encoder>
    </security:authentication-provider>
</security:authentication-manager>

<!-- Security(Authentication, Encoding) implementations -->
<bean id="userSessionDetailsUtil" class="com.i2i.copycat.service.util.UserSessionDetailsUtil">
</bean>

<bean id="passwordEncoderUtil" class="com.i2i.copycat.service.util.PasswordEncoderUtil">
    <property name="passwordEncoder" ref="springShaPasswordEncoder"></property>
</bean>

<!-- Spring Security's sha capable password encoder -->
<bean id="springShaPasswordEncoder"
    class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
    <constructor-arg value="256" />
</bean>

<!-- Custom Privilege Names to be accepted -->
<bean id="accessDecisionManager"
    class="org.springframework.security.access.vote.AffirmativeBased">
    <property name="decisionVoters">
        <bean class="org.springframework.security.access.vote.RoleVoter">
            <property name="rolePrefix" value="PRV_" />
        </bean>
    </property>
</bean>
<!-- Concurrent Session Control Beans -->

<bean id="sessionRegistry"
    class="org.springframework.security.core.session.SessionRegistryImpl" />

First Login
2012-06-16 13:18:22,325 231156 [080-exec-9] DEBUG ..hibernate.internal.SessionImpl           - Opened session at timestamp: 5487992431767552
2012-06-16 13:18:22,342 231173 [080-exec-9] DEBUG ..jdbc.internal.LogicalConnectionImpl      - Obtaining JDBC connection
2012-06-16 13:18:22,343 231174 [080-exec-9] DEBUG ..jdbc.internal.LogicalConnectionImpl      - Obtained JDBC connection
2012-06-16 13:18:22,343 231174 [080-exec-9] DEBUG ..transaction.spi.AbstractTransactionImpl  - begin
2012-06-16 13:18:22,343 231174 [080-exec-9] DEBUG ..internal.jdbc.JdbcTransaction            - initial autocommit status: true
2012-06-16 13:18:22,343 231174 [080-exec-9] DEBUG ..internal.jdbc.JdbcTransaction            - disabling autocommit
2012-06-16 13:18:22,346 231177 [080-exec-9] DEBUG ..service.util.UserSessionDetailsUtil      - Loading user by name[admin]
2012-06-16 13:18:22,347 231178 [080-exec-9] DEBUG ..copycat.domain.User                      - [User][Operation:getMatchingUnique() ][Session:1630011351][Transaction:151891478]User
2012-06-16 13:18:22,351 231182 [080-exec-9] DEBUG ..copycat.domain.User                      - [User][Operation:addRestrictionToCriteria() ][Session:1630011351][Transaction:151891478]User
2012-06-16 13:18:22,497 231328 [080-exec-9] DEBUG ..org.hibernate.SQL                        -
2012-06-16 13:18:22,546 231377 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Result set row: 0
2012-06-16 13:18:22,552 231383 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Result row: EntityKey[com.i2i.copycat.domain.User#2]
2012-06-16 13:18:22,563 231394 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Resolving associations for [com.i2i.copycat.domain.User#2]
2012-06-16 13:18:22,567 231398 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Loading entity: [com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:18:22,567 231398 [080-exec-9] DEBUG ..org.hibernate.SQL

2012-06-16 13:18:22,568 231399 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Result set row: 0
2012-06-16 13:18:22,568 231399 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Result row: EntityKey[com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:18:22,569 231400 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Resolving associations for [com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:18:22,577 231408 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Adding entity to second-level cache: [com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:18:22,585 231416 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Done materializing entity [com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:18:22,585 231416 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Done entity load
2012-06-16 13:18:22,586 231417 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Loading entity: [com.i2i.copycat.domain.Group#1]
2012-06-16 13:18:22,586 231417 [080-exec-9] DEBUG ..org.hibernate.SQL                        -
2012-06-16 13:18:22,588 231419 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Result set row: 0
2012-06-16 13:18:22,588 231419 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Result row: EntityKey[com.i2i.copycat.domain.Group#1]
2012-06-16 13:18:22,590 231421 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Resolving associations for [com.i2i.copycat.domain.Group#1]
2012-06-16 13:18:22,592 231423 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Adding entity to second-level cache: [com.i2i.copycat.domain.Group#1]
2012-06-16 13:18:22,597 231428 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Done materializing entity [com.i2i.copycat.domain.Group#1]
2012-06-16 13:18:22,597 231428 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Done entity load
2012-06-16 13:18:22,597 231428 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Adding entity to second-level cache: [com.i2i.copycat.domain.User#2]
2012-06-16 13:18:22,597 231428 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Done materializing entity [com.i2i.copycat.domain.User#2]
2012-06-16 13:18:22,597 231428 [080-exec-9] DEBUG ..engine.internal.StatefulPersistenceContext - Initializing non-lazy collections
2012-06-16 13:18:22,602 231433 [080-exec-9] DEBUG ..service.bean.CopycatUserDetails          - [getPrivileges() ][User:[Sk: 2][Name: ADMIN][UserType:[Code: SYS][Type: SYSTEM]][Group:[Sk: 1][Name: SYSTEM_ADMIN]]]
2012-06-16 13:18:22,604 231435 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Loading collection: [com.i2i.copycat.domain.User.privileges#2]
2012-06-16 13:18:22,605 231436 [080-exec-9] DEBUG ..org.hibernate.SQL
2012-06-16 13:18:22,606 231437 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Result set contains (possibly empty) collection: [com.i2i.copycat.domain.User.privileges#2]
2012-06-16 13:18:22,611 231442 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Result set row: 0
2012-06-16 13:18:22,611 231442 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Result row: EntityKey[com.i2i.copycat.domain.Privilege#LOGIN]
2012-06-16 13:18:22,612 231443 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Found row of collection: [com.i2i.copycat.domain.User.privileges#2]
2012-06-16 13:18:22,613 231444 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Resolving associations for [com.i2i.copycat.domain.Privilege#LOGIN]
2012-06-16 13:18:22,613 231444 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Adding entity to second-level cache: [com.i2i.copycat.domain.Privilege#LOGIN]
2012-06-16 13:18:22,613 231444 [080-exec-9] DEBUG ..engine.internal.TwoPhaseLoad             - Done materializing entity [com.i2i.copycat.domain.Privilege#LOGIN]
2012-06-16 13:18:22,614 231445 [080-exec-9] DEBUG ..loading.internal.CollectionLoadContext   - 1 collections were found in result set for role: com.i2i.copycat.domain.User.privileges
2012-06-16 13:18:22,614 231445 [080-exec-9] DEBUG ..loading.internal.CollectionLoadContext   - Collection fully initialized: [com.i2i.copycat.domain.User.privileges#2]
2012-06-16 13:18:22,614 231445 [080-exec-9] DEBUG ..loading.internal.CollectionLoadContext   - 1 collections initialized for role: com.i2i.copycat.domain.User.privileges
2012-06-16 13:18:22,614 231445 [080-exec-9] DEBUG ..engine.internal.StatefulPersistenceContext - Initializing non-lazy collections
2012-06-16 13:18:22,614 231445 [080-exec-9] DEBUG ..hibernate.loader.Loader                  - Done loading collection
2012-06-16 13:18:22,615 231446 [080-exec-9] DEBUG ..service.bean.CopycatUserDetails          - [getPrivileges() ]...[DONE]
2012-06-16 13:18:22,615 231446 [080-exec-9] DEBUG ..transaction.spi.AbstractTransactionImpl  - committing
2012-06-16 13:18:22,617 231448 [080-exec-9] DEBUG ..internal.jdbc.JdbcTransaction            - committed JDBC Connection
2012-06-16 13:18:22,617 231448 [080-exec-9] DEBUG ..internal.jdbc.JdbcTransaction            - re-enabling autocommit
2012-06-16 13:18:22,618 231449 [080-exec-9] DEBUG ..jdbc.internal.LogicalConnectionImpl      - Releasing JDBC connection
2012-06-16 13:18:22,619 231450 [080-exec-9] DEBUG ..jdbc.internal.LogicalConnectionImpl      - Released JDBC connection
2012-06-16 13:18:22,619 231450 [080-exec-9] DEBUG ..internal.proxy.ConnectionProxyHandler    - HHH000163: Logical connection releasing its physical connection
2012-06-16 13:18:22,619 231450 [080-exec-9] DEBUG ..internal.proxy.ConnectionProxyHandler    - HHH000163: Logical connection releasing its physical connection
2012-06-16 13:18:22,619 231450 [080-exec-9] DEBUG ..internal.proxy.ConnectionProxyHandler    - HHH000163: Logical connection releasing its physical connection
2012-06-16 13:18:22,619 231450 [080-exec-9] DEBUG ..internal.proxy.ConnectionProxyHandler    - HHH000163: Logical connection releasing its physical connection

Second Login
2012-06-16 13:21:38,352 427183 [080-exec-7] DEBUG ..hibernate.internal.SessionImpl           - Opened session at timestamp: 5487993234845696
2012-06-16 13:21:38,354 427185 [080-exec-7] DEBUG ..jdbc.internal.LogicalConnectionImpl      - Obtaining JDBC connection
2012-06-16 13:21:38,354 427185 [080-exec-7] DEBUG ..jdbc.internal.LogicalConnectionImpl      - Obtained JDBC connection
2012-06-16 13:21:38,354 427185 [080-exec-7] DEBUG ..transaction.spi.AbstractTransactionImpl  - begin
2012-06-16 13:21:38,355 427186 [080-exec-7] DEBUG ..internal.jdbc.JdbcTransaction            - initial autocommit status: true
2012-06-16 13:21:38,355 427186 [080-exec-7] DEBUG ..internal.jdbc.JdbcTransaction            - disabling autocommit
2012-06-16 13:21:38,355 427186 [080-exec-7] DEBUG ..service.util.UserSessionDetailsUtil      - Loading user by name[admin]
2012-06-16 13:21:38,356 427187 [080-exec-7] DEBUG ..copycat.domain.User                      - [User][Operation:getMatchingUnique() ][Session:2031763761][Transaction:716060180]User
2012-06-16 13:21:38,356 427187 [080-exec-7] DEBUG ..copycat.domain.User                      - [User][Operation:addRestrictionToCriteria() ][Session:2031763761][Transaction:716060180]User
2012-06-16 13:21:38,357 427188 [080-exec-7] DEBUG ..org.hibernate.SQL                        -
2012-06-16 13:21:38,365 427196 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Result set row: 0
2012-06-16 13:21:38,365 427196 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Result row: EntityKey[com.i2i.copycat.domain.User#2]
2012-06-16 13:21:38,366 427197 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Resolving associations for [com.i2i.copycat.domain.User#2]
2012-06-16 13:21:38,367 427198 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Loading entity: [com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:21:38,368 427199 [080-exec-7] DEBUG ..org.hibernate.SQL                        -
2012-06-16 13:21:38,369 427200 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Result set row: 0
2012-06-16 13:21:38,370 427201 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Result row: EntityKey[com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:21:38,370 427201 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Resolving associations for [com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:21:38,370 427201 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Adding entity to second-level cache: [com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:21:38,371 427202 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Done materializing entity [com.i2i.copycat.domain.UserType#SYS]
2012-06-16 13:21:38,371 427202 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Done entity load
2012-06-16 13:21:38,371 427202 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Loading entity: [com.i2i.copycat.domain.Group#1]
2012-06-16 13:21:38,372 427203 [080-exec-7] DEBUG ..org.hibernate.SQL                        -
2012-06-16 13:21:38,373 427204 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Result set row: 0
2012-06-16 13:21:38,374 427205 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Result row: EntityKey[com.i2i.copycat.domain.Group#1]
2012-06-16 13:21:38,374 427205 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Resolving associations for [com.i2i.copycat.domain.Group#1]
2012-06-16 13:21:38,375 427206 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Adding entity to second-level cache: [com.i2i.copycat.domain.Group#1]
2012-06-16 13:21:38,375 427206 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Done materializing entity [com.i2i.copycat.domain.Group#1]
2012-06-16 13:21:38,375 427206 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Done entity load
2012-06-16 13:21:38,376 427207 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Adding entity to second-level cache: [com.i2i.copycat.domain.User#2]
2012-06-16 13:21:38,376 427207 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Done materializing entity [com.i2i.copycat.domain.User#2]
2012-06-16 13:21:38,376 427207 [080-exec-7] DEBUG ..engine.internal.StatefulPersistenceContext - Initializing non-lazy collections
2012-06-16 13:21:38,377 427208 [080-exec-7] DEBUG ..service.bean.CopycatUserDetails          - [getPrivileges() ][User:[Sk: 2][Name: ADMIN][UserType:[Code: SYS][Type: SYSTEM]][Group:[Sk: 1][Name: SYSTEM_ADMIN]]]
2012-06-16 13:21:38,377 427208 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Loading collection: [com.i2i.copycat.domain.User.privileges#2]
2012-06-16 13:21:38,377 427208 [080-exec-7] DEBUG ..org.hibernate.SQL                        -

2012-06-16 13:21:38,379 427210 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Result set contains (possibly empty) collection: [com.i2i.copycat.domain.User.privileges#2]
2012-06-16 13:21:38,379 427210 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Result set row: 0
2012-06-16 13:21:38,380 427211 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Result row: EntityKey[com.i2i.copycat.domain.Privilege#LOGIN]
2012-06-16 13:21:38,380 427211 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Found row of collection: [com.i2i.copycat.domain.User.privileges#2]
2012-06-16 13:21:38,383 427214 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Resolving associations for [com.i2i.copycat.domain.Privilege#LOGIN]
2012-06-16 13:21:38,383 427214 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Adding entity to second-level cache: [com.i2i.copycat.domain.Privilege#LOGIN]
2012-06-16 13:21:38,384 427215 [080-exec-7] DEBUG ..engine.internal.TwoPhaseLoad             - Done materializing entity [com.i2i.copycat.domain.Privilege#LOGIN]
2012-06-16 13:21:38,384 427215 [080-exec-7] DEBUG ..loading.internal.CollectionLoadContext   - 1 collections were found in result set for role: com.i2i.copycat.domain.User.privileges
2012-06-16 13:21:38,384 427215 [080-exec-7] DEBUG ..loading.internal.CollectionLoadContext   - Collection fully initialized: [com.i2i.copycat.domain.User.privileges#2]
2012-06-16 13:21:38,384 427215 [080-exec-7] DEBUG ..loading.internal.CollectionLoadContext   - 1 collections initialized for role: com.i2i.copycat.domain.User.privileges
2012-06-16 13:21:38,385 427216 [080-exec-7] DEBUG ..engine.internal.StatefulPersistenceContext - Initializing non-lazy collections
2012-06-16 13:21:38,385 427216 [080-exec-7] DEBUG ..hibernate.loader.Loader                  - Done loading collection
2012-06-16 13:21:38,385 427216 [080-exec-7] DEBUG ..service.bean.CopycatUserDetails          - [getPrivileges() ]...[DONE]
2012-06-16 13:21:38,385 427216 [080-exec-7] DEBUG ..transaction.spi.AbstractTransactionImpl  - committing
2012-06-16 13:21:38,385 427216 [080-exec-7] DEBUG ..internal.jdbc.JdbcTransaction            - committed JDBC Connection
2012-06-16 13:21:38,386 427217 [080-exec-7] DEBUG ..internal.jdbc.JdbcTransaction            - re-enabling autocommit
2012-06-16 13:21:38,386 427217 [080-exec-7] DEBUG ..jdbc.internal.LogicalConnectionImpl      - Releasing JDBC connection
2012-06-16 13:21:38,386 427217 [080-exec-7] DEBUG ..jdbc.internal.LogicalConnectionImpl      - Released JDBC connection
2012-06-16 13:21:38,387 427218 [080-exec-7] DEBUG ..internal.proxy.ConnectionProxyHandler    - HHH000163: Logical connection releasing its physical connection
2012-06-16 13:21:38,387 427218 [080-exec-7] DEBUG ..internal.proxy.ConnectionProxyHandler    - HHH000163: Logical connection releasing its physical connection
2012-06-16 13:21:38,387 427218 [080-exec-7] DEBUG ..internal.proxy.ConnectionProxyHandler    - HHH000163: Logical connection releasing its physical connection
2012-06-16 13:21:38,387 427218 [080-exec-7] DEBUG ..internal.proxy.ConnectionProxyHandler    - HHH000163: Logical connection releasing its physical connection

A: I don't see any logs stating that the Spring Security FilterChainProxy is being invoked. Did you just leave these logs out or are you authenticating the user yourself? Typically the registration of the session is performed by UsernamePasswordAuthenticationFilter or some other subclass of AbstractAuthenticationProcessingFilter. If you are authenticating the user yourself, then you need to ensure to invoke ConcurrentSessionControlStrategy#onAuthentication.
It appears you are using a custom UserDetailsService which probably means that you are returning a custom UserDetails. It is critical to implement UserDetails#hashCode and UserDetails#equals properly in order for SessionRegistryImpl to work since it is backed by a ConcurrentMap.
If you have a clustered deployment, the SessionRegistryImpl will not work since the cluster does not share memory with other nodes in the environment. In this instance, you would need to provide your own SessionRegistry implementation.
PS: It appears you are only protecting /pages/** which is not generally recommended. Instead it is recommended that you explicitly grant access to pages and by default restrict access.

redpajama_set_name: RedPajamaStackExchange


Emy is a cute girl from the west coast who really like to shop in beverly hills. She can spend a lot of time daily in the stores with his friends. Put some beautiful clothes on her and she will buy them for sure.
Emy Shopping in California is a free online dress up, girl, girls, kids game. Here you can online games and find a lot of dress up, girls, kids, shopping, california games in different category like games and more.
Free Online Games at PlayBestFreeOnlineGames.com Copyright © 2010-2019 Play Emy Shopping in California Games.


text:
News / Koreas
North Korea warns South of ending military pact over propaganda leaflets
Thursday, 04 June 2020 5:54 AM [ Last Update: Thursday, 04 June 2020 5:54 AM ]
South Korean soldiers are seen at the Demilitarized Zone (DMZ) separating the two Koreas. (File photo)
North Korean leader Kim Jong-un's sister has warned South Korea of the possible scrapping of a recent inter-Korean military agreement if Seoul fails to stop North Korean defectors from sending propaganda leaflets into the Demilitarized Zone (DMZ) separating the two countries.
In a statement carried by the Korean Central News Agency (KCNA) on Thursday, Kim Yo-jong said the military pact reached in 2018 that promised to eliminate practical threats of war was "hardly of any value."
She added that the North could also permanently shut the Kaesong industrial region and the liaison office in the North Korean border town if Seoul did not stop the defectors.
Thousands of anti-Pyongyang leaflets were recently flown with balloons into the North's side of the demilitarized zone. The leaflets often carried propaganda messages that condemned Kim Jong-un over the country's missile and nuclear programs.
"If such an act of evil intention committed before our eyes is left to take its own course under the pretext of 'freedom of individuals' and 'freedom of expression,' the South Korean authorities must face the worst phase shortly," Kim Yo-jong said in the statement.
The KCNA report did not single out any individuals for blame in the leafleting. But Kim Yo-jong's comments came after a former North Korean diplomat and another North Korean defector won parliamentary seats in South Korea's general elections in April.
Two North Korea defectors apologize for rumor about Kim's death
South Korea's ruling Democratic Party has criticized the pair for carelessness.
North and South Korea have been separated by the Demilitarized Zone since the three-year Korean War came to an end in 1953.
The zone, which is one of the world's most heavily-fortified border areas, is planted with some two million mines and guarded by barbed wire fences, tank traps, and combat troops on both sides.
Kim Yo-jong serves unofficially as her brother's chief of staff and formally as a vice director of the ruling Workers' Party's powerful Central Committee.
North Korea South Korea Asia-Pacific Kim Jong-Un military warning demilitarized zone agreement
MORE FROM Koreas
North Korea to resume nuclear and long-range missile tests
S Korea, Japan: North Korea fires 'unidentified objects', possibly ballistic missiles
Pentagon: Air defenses showed N Korean missile could strike US

redpajama_set_name: RedPajamaCommonCrawl


text:
I wouldn't give you Jack for that
Naming rights for a person?
That's a new one.
But Stan Oleynick, a 23-year-old Sacramento, CA., is taking bids on his Web site, holdmyrecord.com, to rename himself.
It's a ploy to raise money for his start up. The winner also gets a 10 percent stake in the fledgling company, which may release its "revolutionary" product in September
Oleynick promises to try to break a Guinness Book record to get his new name some good pub.
And you can buy it now for $250,000 or bid on it. The current top bid is $16,000.
It was crazy enough to get me to write about it.
(via Read/WriteWeb)


This image gallery named as Ebay Wrtng Desk Amsh Computer Wrtng Desk Lbrary might be ideal solution for your decoration. As the author has insert this image into Unfinished Furniture Snellville Ga post section, would ease you to find the perfect match of you decor desire.
In the Ebay wrtng desk amsh computer wrtng desk lbrary, the cupboard layouts usually are subsequent unfinished furniture snellville ga to Furniture designs itself. But , there are 7 standard Furniture designs you may select for unfinished furniture snellville ga your Furniture cabinet layouts, including: Typically, one wall Furniture design is sent applications for little Furniture space. The upper and lower cabinets, refrigerator, sink, and unfinished furniture snellville ga stove in sequence are put into one row relating to into the code and safety concern. The constrained spaces can be a challenge in foods prep, however give a simple time for reaching cooking tools or ingredients in the cupboards.
Online shop will be the right spot to get discount or alternative special rates. You don't have to visit the socket that sells curtains . All you could need is he acknowledge about these substances. Several of the online stores offer codes or coupon that will lead one to specific thing. Because the curtain is very good for chimney treatment, you ought not lose out on it. The curtains ought to be corrected with all the Furniture and atmosphere you want to build from the cooking space. But of course it will appear much better if the drapes are installed nearby the eating area. Superior price tag indicates Ebay wrtng desk amsh computer wrtng desk lbrary.
Furniture is one the critical rooms in your home. Every housewife prepare the meals, cooks and bakes in the Furniture for the family. The utensils and appliances used may change. Since there really are plenty of stuffs required from the Furniture, you can find many interesting gives about Furniture appliance package. Furniture appliance's materials also distinctive in one another. Some individuals love aluminum. When many individuals prefer Ebay wrtng desk amsh computer wrtng desk lbrary to truly have. Furniture appliances made which can be made out of stainless steel still are many different. Start-S from table, prep dining table, cooking equipment (cooker, grill, fryer, charcoal grill, grinder for instance, and so forth ) and sink.
What do you ought to look at when remodeling or making Furniture? Effectively, there is lots of it and also a few of them is thinking about the design. You'll find many layouts for your own Furniture and being among the popular is Ebay wrtng desk amsh computer wrtng desk lbrary. You'll find that this L-shaped in nearly every single Furniture. The L shaped will maximize the use of corner of their Furniture area spaces and also the utilization of 2 walls from the Furniture. For that reason, there will not be waste.
The very first paint inspiration to get the Furniture cabinet is blue. Some people avoid this color since it can decrease the appetite. But, blue may be the fresh color also it will be great to be applied to the Furniture cabinet. You can pick the type of blue that you like, either blue skies or navy. Dark for Furniture cabinet is also advisable. Some men and women prefer to paint their Furniture cabinets with dark color to prevent dirt and coloration fluctuations. To present the sweet and lovely Furniture, you can employ pink coloration on your Furniture cupboard. Those Ebay wrtng desk amsh computer wrtng desk lbrary previously mentioned can be put together with neutral colors, such as cream, white, or gray. So, do not be afraid to explore uncommon colors for your own Furniture.
Modern-day Ebay wrtng desk amsh computer wrtng desk lbrary signify the beauty of art. Besides having abundant lighting, they take the stunning balance and glamorous style. Proceed together side the superb sequence of pendant lights out there at store, this can light your Furniture island. Your lovely Furniture will not be dull and gloomy . The layouts of Furniture pendant lighting over island now are many different. You can find a number of types of lighting for your own Furniture in fact. But picking Furniture pendant lighting over island will be great idea.
The very first issue you must do would be to remove each one the things you've got from your cabinets. Clearing the cabinets will allow it to be simpler for you to eliminate it. The next measure previous to Ebay wrtng desk amsh computer wrtng desk lbrary is by removing the doorways in addition to the drawers. Then, label each doorway and drawer, therefore that you will know precisely in which they are belong. Preferably, use a prybar to eliminate the cove molding and also the soffit. Fifth, just take the cupboard and also the cupboards attentively. After you end, you'll be able to throw a few of the doors or drawers that must not be utilized any longer or you may also donate for people who require it. The most important thing you should consider before Furniture will be to ask a person to help you as you definitely cannot do this on your own.


text:
Q: Angular http RXJS observable not invoking error callbacks I have an angular project, which is using RXJS observables. Everything is fine unless I have to deal with error handling, but when the API returns errors the error callback is never being called.
 this.http
  .post(url, registerFormData)
  .pipe(
    catchError((err) => {
      console.log(err);
      return throwError(err);
    })
  )
  .subscribe(
    (res) => console.log('HTTP response', res),
    (err) => console.log('HTTP Error', err),
    () => console.log('HTTP request completed.')
  );

// package.json
"@angular/animations": "^10.0.14",
"@angular/common": "~10.0.5",
"@angular/compiler": "~10.0.5",
"@angular/core": "~10.0.5",
"@angular/forms": "~10.0.5",
"@angular/localize": "~10.0.5",
"@angular/platform-browser": "~10.0.5",
"@angular/platform-browser-dynamic": "~10.0.5",
"@angular/router": "~10.0.5",
"@ng-bootstrap/ng-bootstrap": "^7.0.0",
"bootstrap": "^4.5.0",
"fs-extra": "^9.0.1",
"ng2-file-upload": "^1.4.0",
"ngx-toastr": "^13.0.0",
"rxjs": "~6.5.5",
"tslib": "^2.0.0",
"zone.js": "~0.10.3"

A: I am sorry for this, but I managed to find the solution by myself.
If the admins think this is handy let it be here as it may help somebody else, if not it can be deleted.
So I had an interceptor for http errors and didn't return properly the error observable, so it must have failed somewhere on the pipe functions. The strange thing is that neither RXJS throwed errors if the error object is missing, neither angular threw errors about that.
export class TokenInterceptorService implements HttpInterceptor {

constructor(
private storage: StorageService,
private notificator: NotificationService
) {}
public intercept(request: HttpRequest, next: HttpHandler) {
const token = this.storage.get('token') || '';
const updatedRequest = request.clone({
  setHeaders: {
    Authorization: `Bearer ${token}`,
  },
  responseType: 'text',
});

return next.handle(updatedRequest).pipe(
  catchError((err: any) => {
    if (err instanceof HttpErrorResponse && err.status === 401) {
      this.notificator.error(
        'Session expired, you are being redirected to home screen'
      );
      this.storage.remove('token');
      this.storage.remove('user');

      setTimeout(() => {
        location.reload();
      }, 1000);
    }
    // return of([err]); // not working ...
    return throwError(err); // this is now working as throwError returns the
    proper error observable, which invokes the error callback in subsribe
    callbacks.
  })
);

}
}


text:
«Love Songs (They Kill Me)» — песня немецкой группы Cinema Bizarre, с их дебютного альбома Final Attraction. Песня была #9 в German Hot 100 чарте.

Песни сингла
CD Сингл (2-трека версия)
 «Lovesongs (They Kill Me)» — 3:44
 «Lovesongs (They Kill Me) (Eyeland Remix)» — 3:43

CD Сингл
 «Love Songs (They Kill Me)» — 3:44
 «She Waits For Me» — 3:13
 «Lovesongs (They Kill Me) (Kyau & Albert Remix)» — 6:36
 «Lovesongs (They Kill Me) (Instrumental)» — 3:44

Ссылки

Синглы 2007 года
Синглы Island Records

redpajama_set_name: RedPajamaWikipedia


Our Big News — WE'RE MOVING!!!
A couple of weeks ago, I mentioned that I had some pretty big news to share. Apparently I like keeping you all in suspense, because it's taken me this long to share it! So our exciting news is — WE'RE MOVING BACK TO RHODE ISLAND!!
We actually made this decision quite some time ago, however, we needed a few things to fall into place, and share our news first with our family and friends. But this is will be such a fantastic move for our family, and we couldn't be happier.
We purchased 4 acres of land on a beautiful lot and will be building our dream home! The lot is located on a cul-de-sac road, so really perfect for the kids to grow up on. There are a few other houses on the road, but it's not overly populated in the least.
We visited a couple of weeks ago, and the land has already been cleared, and the digging process had begun. Since that time the forms for the foundation have been set — and for all I know, the foundation could be in already!
We had a little family photo shoot when we visited our property. I think you can tell in these pictures how happy we all are.
So you might be wondering what prompted our big move from Connecticut to Rhode Island. Well, honestly it all goes back to our car accident 2-years ago (and yes, I know I still need to write Part 3, it's coming, I swear). So about that…I'm still not back to where I was before the accident. And honestly, I probably never will be. I broke 14 bones in the crash — including my neck in two different locations. With all of the trauma my body sustained, I have permanent lasting damage. I am still unable to drive a car. While I am currently physically unable to drive, emotionally, I don't know if I will ever be able to again. As I type this blog post, I am typing with my right hand and left thumb. Due to the spinal cord injury, I have constant numbness and tingling sensations in my left hand, making it impossible to perform simple tasks, like type.
As hard as all of that is to accept, it sure beats the alternative. I'm alive and here for my children. I consider myself very, very lucky. If you were to hear all of the details of my story, you will find it miraculous that I survived — that we all survived. So in all honesty…I am thankful.
Rhode Island is where I'm originally from. My parents and brother are still there. In fact, my parents will be living with us. They will have their own section of the house with their garage. We need the extra help. We are also installing an indoor pool so I can do my aquatic therapy at home. This will be huge for me and so incredibly helpful. Keeping up with the water therapy is crucial to maintain what I've got back. Every single aspect of our home will be wheelchair accessible.
We will be moving to Rhode Island at the end of August, so Lincoln can start the school year there — where he will be going to school with his cousin who's in the same grade! They're very excited about this, and I just love that they'll grow up together!
I posted a photo on instagram the other day with the hashtag #allenshomesweethome. I hope you'll follow along on our exciting adventure! I'm looking forward to sharing this experience and blogging about it all!
So exciting for you and your family. Congrats!
So exciting!! Congrats to you all! I can't wait to see your journey!
Your a true inspiration for all who read this. I know we only met briefly at the DSMMC, but I knew you were a strong woman with an incredibly supportive family. I'm thrilled you get to build the home of your dreams and that your able to make new memories with the ones you love.
I will keep you and your healing process in my prayers.
I am so happy we got to meet in person at Disney #SMMC in Boston. Can't wait till you are back in Rhody!
It does sound exciting, and hope it is a lot of fun the process. I'm so terribly sorry to hear about your accident, I didn't realize what happened. I just read your post about it, and the picture of the car – yikes. Prayers for you and your family.


The hairdressing salon Blanc Geraci & Lundberg has been awarded as Hair Salon of the Year at Växjö's Best. Since its opening in Växjö, they have expanded with salons in Halmstad and Jönköping. Now it is announced that the salon leaves Bländapassagen in Växjö to move to another premises in central Växjö.
In April, Blanc Geraci & Lundberg opens at Storgatan 8, in Boomerang's former premises. The premises is around 200 square meters.
One of the partners, Fiorella Geraci, has previously won the award hairdresser of the year in Sweden on three occasions.