JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java Application Framework » Spring  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
己加入精華區
by koji at 2008-03-11 15:48
本主題所含的標籤
無標籤
作者 利用Acegi 做到 同一時間, 一個帳號只能有一個 login [精華]
fjj





發文: 127
積分: 5
於 2008-03-11 15:37 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
最近老闆交代希望 做到 同一時間, 一個帳號只能有一個 login, 以杜絕借帳號使用的員工
於是上網查了一下, Acegi 的設定, 順便將心得提供給大家

1.
<bean id="concurrentSessionController" class="org.acegisecurity.concurrent.ConcurrentSessionControllerImpl">
<!-- 設成 -1 不會限制, 不可以是0, 大於0則是依據數字提供 session -->
<property name="maximumSessions"><value>1</value></property>
<property name="sessionRegistry"><ref local="sessionRegistry"/></property>
</bean>
<bean id="concurrentSessionFilter" class="org.acegisecurity.concurrent.ConcurrentSessionFilter">
<property name="expiredUrl" value="/login.jsp"/>
<property name="sessionRegistry" ref="sessionRegistry"/>
</bean>
<bean id="sessionRegistry" class="org.acegisecurity.concurrent.SessionRegistryImpl"/>

2.
在 filterChainProxy 裡面加上 concurrentSessionFilter


reply to postreply to post
作者 Re:利用Acegi 做到 同一時間, 一個帳號只能有一個 login [Re:fjj]
MistyJungle

沒錢萬萬不能...



發文: 56
積分: 0
於 2008-03-11 16:02 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問會不會兩個 server 就兩個 login?

reply to postreply to post
作者 Re:利用Acegi 做到 同一時間, 一個帳號只能有一個 login [Re:fjj]
fjj





發文: 127
積分: 5
於 2008-03-11 21:45 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
您問的問題應該是 Single sign-on....
我先在這邊先定義一下 single sign-on, 以免未來有人誤解.

所謂的 single sign-on 應該是
為了提供給 使用者 更方便的使用Server 的各項功能,
但是, 這些 Server 開發當初又不是放在相同的 , Servlet Context 下,
以致於,當使用者 已經登入了某個 Servlet Context 後,
想要使用另外一個 Servlet Context , 卻必須另外 Login 的不方便

如果以上是您所需要的, 那麼您應該採用 Single sign-on的服務,
Single sign-on 的作法, 各家的Web Server都不同,
因此, 很難有統一的解答, 而我也只知道 Tomcat 以及 JBoss 的做法而已,
如果您對於這個問題的討論有興趣, 或許我們可以到 另一個版 "Application Server"來討論

可能您想要問, 有沒有跨 Server 的 Solution ??!!
其實是有的, 但是卻要搭配 其他的Solution, 無法直接由 Server 設定,
(當然嘛!!...因為跨Server了....)
以 Acegi 而言, 它的對應就是 JA-SIG 的 Central Authentication Service (CAS)
這您在 Acegi 的首頁當中, 就可以看到 Enterprise-wide single sign on 議題
它有進一步的解釋...
在 JA-SIG的首頁 http://www.ja-sig.org/products/cas/ 您可以在 What is CAS?
看到關於這個的解釋...
JA-SIG 最初是由美國耶魯大學 所開發的一套 認證系統 , 在 2004年的12月
才成為 JA-SIG 計畫,
它的運作主要是透過 "一次使用性" 的 ticket , 有點像單程的捷運票,
先向 JA-SIG 伺服器取得一個合法進入的 ticket, ticket 會有效期, 也會失效
然後, Acegi 要使用 JA-SIG相對應的 Client 端, 以驗明這ticket,
如果有ticket, 那就提供服務, 否則就拒絕,
有點像是在捷運站中, 雖然在木柵線買的票 但是即便是轉乘其他線的捷運,
也是可以提供搭乘服務的...

不知道這樣解釋您清楚嗎?


reply to postreply to post
作者 Re:利用Acegi 做到 同一時間, 一個帳號只能有一個 login [Re:fjj]
MistyJungle

沒錢萬萬不能...



發文: 56
積分: 0
於 2008-03-11 21:50 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不好意思, 我不是問 SSO.
我問的是clustering, 兩個 server instance 下會不會有 兩個 server instance 就出現一個 user 可以登入兩次?


reply to postreply to post
作者 Re:利用Acegi 做到 同一時間, 一個帳號只能有一個 login [Re:fjj]
fjj





發文: 127
積分: 5
於 2008-03-11 21:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不好意思, 誤解了您的意思!!
關於多個 Server instance 的 Cluster 架構,
因為我沒實際測試過, 這我不清楚
不過, 我猜想可能會可以登入多次....


reply to postreply to post
作者 Re:利用Acegi 做到 同一時間, 一個帳號只能有一個 login [Re:fjj]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2008-03-11 22:02 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
恩~~沒設過,
但是如果不行的話
就改寫他存"多少session存在"的地方如何~
把他修成譬如丟到db, 要檢查有沒有多人就到db看一下是不是數量到了

koji


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:利用Acegi 做到 同一時間, 一個帳號只能有一個 login [Re:MistyJungle]
Roberto

黑就黑好唄

版主

發文: 193
積分: 4
於 2008-03-13 01:51 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
MistyJungle wrote:
不好意思, 我不是問 SSO.
我問的是clustering, 兩個 server instance 下會不會有 兩個 server instance 就出現一個 user 可以登入兩次?


In most of load balance policies, Yes.

solutions:
1.session replication of course.
2.using sticky sessions for quick and easy way.
3.reimplement your own SessionRegistryImpl.


reply to postreply to post
作者 Re:利用Acegi 做到 同一時間, 一個帳號只能有一個 login [Re:fjj]
konasJSP





發文: 160
積分: 0
於 2008-07-24 09:49 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
提供一下Acegi 下一版 Spring Security 的做法

web.xml 加入
1
2
3
<listener>
  <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
</listener>


Spring Security 設定檔 <http></http>內加入

1
2
3
4
5
6
7
<http>
    ...
    <concurrent-session-control max-sessions="1" /> <!-- 新登入踢掉舊登入 -->
    <!--  拒絕新登入
    <concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="true"/>
     -->
</http>


reply to postreply to post
我不聰明 所以要努力
我不富有 所以要有夢想
作者 Re:利用Acegi 做到 同一時間, 一個帳號只能有一個 login [Re:fjj]
sunning402





發文: 1
積分: 0
於 2008-12-11 12:01 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
如果我是想要阻止新登入的呢?就是exception-if-maximum-exceeded="false"

這個時候如果前一個用戶直接關閉browser的話,后面的人還是上不了,因為沒正式的logout。
請問下,這個問題是否可以直接在配置文件解決的呢?謝謝!


reply to postreply to post
» JWorld@TW »  Java Application Framework » Spring

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8