hi Les Hazlewood,

how to specify maximum user session for the login like in spring as follows

<security:concurrent-session-control
  max-sessions="1" exception-if-maximum-exceeded="true"
expired-url="/loginform.do" />

i am assuming that there is a way in apache shiro, how to configure
this behaviour in apache shiro security api please guide me.

thanking u. :)




On Thu, Jul 4, 2013 at 12:12 AM, Nagaraju Kurma <
[email protected]> wrote:

> Hi Les Hazlewood,
> i am very much happy to see your reply and thankful to you..
>
> i checked that sample web application and it is working very much
> properly, as you said shiroFilter only doing that becoz there is no
> separate configauration for that.
>
> there they are using shiro.ini file to maintain the data where in our
> application we are maintaining ElasticSearch only this one is the
> difference which no where dependent.
>
> i am using shiroFilter in web.xml as our sample web application but in my
> application i am not getting that bread crumbs effect, could you pls
> suggest me?
>
> i am not sure that my configuration is 100% currecct, please help me out
> in this.
>
> here is my web.xml file
> ----------------------------------
>
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>  xmlns="http://java.sun.com/xml/ns/javaee"; xmlns:jsp="
> http://java.sun.com/xml/ns/javaee/jsp";
>  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
>  version="2.5">
> <display-name>spring freemarker</display-name>
> <context-param>
>  <param-name>spring.profiles.default</param-name>
> <param-value>production</param-value>
>  </context-param>
> <listener>
>
> <listener-class>net.enhancesys.auth.listeners.SystemOptionsUtilitiesListener</listener-class>
>  </listener>
> <listener>
>
> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
>  </listener>
> <listener>
> <listener-class>freemarker.ext.jsp.EventForwarding</listener-class>
>  </listener>
> <filter>
> <filter-name>shiroFilter</filter-name>
>
> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
> <init-param>
>  <param-name>targetFilterLifecycle</param-name>
> <param-value>true</param-value>
>  </init-param>
> </filter>
> <filter-mapping>
>  <filter-name>shiroFilter</filter-name>
> <url-pattern>/*</url-pattern>
> </filter-mapping>
>  <listener>
>
> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
>  </listener>
> <servlet>
> <servlet-name>JQGridTranServlet</servlet-name>
>
> <servlet-class>net.enhancesys.crm.singlescreen.servlet.JQGridTranServlet</servlet-class>
> </servlet>
>  <servlet-mapping>
> <servlet-name>JQGridTranServlet</servlet-name>
> <url-pattern>/JQGridTranServlet</url-pattern>
>  </servlet-mapping>
> <servlet>
> <servlet-name>springServlet</servlet-name>
>
> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
> <init-param>
>  <param-name>contextConfigLocation</param-name>
> <param-value>/WEB-INF/applicationContext.xml</param-value>
>  </init-param>
> <load-on-startup>1</load-on-startup>
> </servlet>
>  <servlet-mapping>
> <servlet-name>springServlet</servlet-name>
> <url-pattern>/*</url-pattern>
>  </servlet-mapping>
> <servlet>
> <description></description>
>  <display-name>JQGridServlet</display-name>
> <servlet-name>JQGridServlet</servlet-name>
>
> <servlet-class>net.enhancesys.crm.singlescreen.servlet.JQGridServlet</servlet-class>
> </servlet>
>  <servlet-mapping>
> <servlet-name>JQGridServlet</servlet-name>
> <url-pattern>/JQGridServlet</url-pattern>
>  </servlet-mapping>
> <servlet>
> <description></description>
>  <display-name>JQGridCallServlet</display-name>
> <servlet-name>JQGridCallServlet</servlet-name>
>
> <servlet-class>net.enhancesys.crm.singlescreen.servlet.JQGridCallServlet</servlet-class>
> </servlet>
>  <servlet-mapping>
> <servlet-name>JQGridCallServlet</servlet-name>
> <url-pattern>/JQGridCallServlet</url-pattern>
>  </servlet-mapping>
> <servlet>
> <description></description>
>  <display-name>JQGridIncidentServlet</display-name>
> <servlet-name>JQGridIncidentServlet</servlet-name>
>
> <servlet-class>net.enhancesys.crm.singlescreen.servlet.JQGridIncidentServlet</servlet-class>
> </servlet>
>  <servlet-mapping>
> <servlet-name>JQGridIncidentServlet</servlet-name>
> <url-pattern>/JQGridIncidentServlet</url-pattern>
>  </servlet-mapping>
> <servlet>
> <description></description>
>  <display-name>JQGridOrdersServlet</display-name>
> <servlet-name>JQGridOrdersServlet</servlet-name>
>
> <servlet-class>net.enhancesys.crm.singlescreen.servlet.JQGridOrdersServlet</servlet-class>
> </servlet>
>  <servlet-mapping>
> <servlet-name>JQGridOrdersServlet</servlet-name>
> <url-pattern>/JQGridOrdersServlet</url-pattern>
>  </servlet-mapping>
> <session-config>
> <session-timeout>1</session-timeout>  <!-- 1 min--->
>  </session-config>
> </web-app>
>
>
> here this session time out configuration is not getting effected into
> application, so that i have configured in spring application context file
> as shown below.
>
> shiro-security.xml
> -------------------------------
>
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans";
>  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:context="
> http://www.springframework.org/schema/context";
>  xmlns:jee="http://www.springframework.org/schema/jee"; xmlns:tx="
> http://www.springframework.org/schema/tx";
>  xmlns:jpa="http://www.springframework.org/schema/data/jpa";
> default-lazy-init="true" xmlns:jdbc="
> http://www.springframework.org/schema/jdbc";
>  xmlns:util="http://www.springframework.org/schema/util"; xmlns:mvc="
> http://www.springframework.org/schema/mvc";
>  xsi:schemaLocation="http://www.springframework.org/schema/jee
> http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
>  http://www.springframework.org/schema/jdbc
> http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
>  http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
>  http://www.springframework.org/schema/util
> http://www.springframework.org/schema/util/spring-util-3.1.xsd
>  http://www.springframework.org/schema/data/jpa
> http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
>  http://www.springframework.org/schema/tx
> http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
>  http://www.springframework.org/schema/context
> http://www.springframework.org/schema/context/spring-context-3.1.xsd";>
>
> <bean id="securityManager"
> class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
> <!-- <property name="cacheManager" ref="cacheManager" /> -->
>  <property name="sessionMode" value="native" />
> <property name="realm" ref="elasticsearchRealm" />
>
>                  <property name="sessionManager.globalSessionTimeout"
> value="60000" />
>
>
> <!-- 1 min -->
>
>        </bean>
>
> <bean
>
> class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
> depends-on="lifecycleBeanPostProcessor" />
>  <bean
>
> class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
>  <property name="securityManager" ref="securityManager" />
> </bean>
>
>  <!-- <bean id="cacheManager"
> class="org.apache.shiro.cache.ehcache.EhCacheManager"
> /> -->
>  <bean id="elasticsearchRealm"
> class="net.enhancesys.auth.realm.ElasticSearchAuthRealm">
> <property name="name" value="elasticsearchRealm" />
>  <property name="featuresLookupEnabled" value="true"></property>
> <property name="rolesLookupEnabled" value="true"></property>
>  <property name="credentialsMatcher">
> <bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
>  <property name="hashAlgorithmName" value="SHA-256" />
> <property name="storedCredentialsHexEncoded" value="false" />
>  </bean>
> </property>
> </bean>
>  <bean
>
> class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
>  <property name="securityManager" ref="securityManager" />
> </bean>
> <bean id="shiroFilter"
> class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
>  <property name="securityManager" ref="securityManager" />
> <property name="loginUrl" value="/login" />
>  <property name="successUrl"
> value="redirect:/main/welcome1?cat=dashboard.summary" />
>  <property name="unauthorizedUrl" value="/login" />
> <property name="filterChainDefinitions">
>  <value>
> /login = anon
> /logout = logout
>  /** = authc
> </value>
> </property>
>  </bean>
> </beans>
>
> please check this configuration and let me know the problem...
>
> thanking you :)
>
>
>
> On Wed, Jul 3, 2013 at 9:09 PM, Les Hazlewood <[email protected]>wrote:
>
>> Hi Nagaraju,
>>
>> This is automatically handled by the authentication filter(s) in Shiro:
>> if they attempt to access a URL and are not logged in, the attempted URL is
>> saved to their session.  After login, Shiro will automatically redirect
>> them back to the URL they originally tried to access.  Shiro's basic sample
>> web application demonstrates this behavior:
>>
>> https://svn.apache.org/repos/asf/shiro/branches/1.2.x/samples/web/
>>
>> HTH,
>>
>> --
>> Les Hazlewood | @lhazlewood
>> CTO, Stormpath | http://stormpath.com | @goStormpath | 888.391.5282
>>
>>
>> On Tue, Jul 2, 2013 at 10:08 PM, Nagaraju Kurma <
>> [email protected]> wrote:
>>
>>> sorry... i didnt get any situationlike that as of now.
>>> please if u know help me here.
>>>
>>> my requirement is i need to implement the bread crumbs in apache shiro
>>> security api, i referred tutorials but didnt reach my point.
>>>
>>> when session is timed out my application automatically redirects to
>>> login page, when the person is relogged in then i need to show the
>>> last activity but now from scrach...
>>>
>>> ex: user is doing operation like link1----> link-2 -------> link3 then
>>> now timed out, after relogin i have to show link3 page but not link1..
>>>
>>> can any body help me here..
>>> any help is appreciated, thanks :)
>>>
>>> On 7/3/13, Pillar <[email protected]> wrote:
>>> > I created an intermediary Observable class that registers the Realm
>>> (which
>>> > implements the Oberserver interface) on startup. When a Controller
>>> action
>>> > that would modify permissions gets called, I invalidate the Observable
>>> > which
>>> > notifies the Realm, which clears the cache.
>>> >
>>> > I don't feel like it's enough indirection, but it works well.
>>> >
>>> > Thanks!
>>> >
>>> >
>>> >
>>> > --
>>> > View this message in context:
>>> >
>>> http://shiro-user.582556.n2.nabble.com/Updating-permissions-dynamically-at-runtime-tp7578886p7578888.html
>>> > Sent from the Shiro User mailing list archive at Nabble.com.
>>> >
>>>
>>>
>>> --
>>>
>>>
>>> Regards,****
>>>
>>> Nagaraju.
>>>
>>
>>
>
>
> --
>
> Regards,****
>
> Nagaraju.
>



-- 

Regards,****

Nagaraju.

Reply via email to