2010年2月13日 星期六

Notes-如何在Notes client中要求使用者再次輸入密碼

一般在使用Notes client的時候,都是在一開始的時候就輸入ID密碼驗證身份。進入系統後開啟每支AP時,由AP本身的設定去檢查該名使用者是否有權限可以進入或是讀寫…
最近客戶Boss丟了這個問題出來:希望可以在開啟某支AP時要求該名使用者再次輸入一次密碼。乍聽之下有點怪,明明Notes已經有良好的權限控管機制了?不過再代入角色想一下,大概是覺得怕自己已經登入使用中的電腦,被別人偷用。利用他的ID進入存取資料∼好的…那Soluction?

目想到的是利用Lotus Script執行讀取ID的方式來達成:

Sub Postopen(Source As Notesuiview)
'------------------測試強制切換ID-----------------------------
Dim w As New NotesUIWorkspace
Dim s As New NotesSession
Dim uidb As NotesUIDatabase
Dim myID As notesID
Dim CurrentUserName As String
Dim IsAllow As Boolean
Set uidb = w.CurrentDatabase
fNames = w.OpenFileDialog( False, "請選擇ID檔",, "D:\lotus\NotesID")

If Not(Isempty(fNames)) Then
'On Error Goto ErrorHandler
CurrentUserName =s.UserName
Set myID = New notesID( fNames(0) )
If (CurrentUserName = myID.userName ) Then
msgStr$ = "OK!"
IsAllow = True
Else
msgStr$ = "No good!"
IsAllow = False
End If
msgStr$ = msgStr$ & Chr(10) & myID.userName
msgStr$ = msgStr$ & Chr(10) & myID.commonname
msgStr$ = msgStr$ & Chr(10) & myID.internationalPublicKey
'msgStr$ = msgStr$ & Chr(10) & myID.internationalPrivateKey
'ProgEnd:
Else
IsAllow = False
End If
Msgbox msgstr$

If Not ( IsAllow) Then
Call uidb.Close
End If

'ErrorHandler:
'Msgbox "Error:" & Err & "__ID:" & fNames(0)
'Call uidb.Close
End Sub

這是網路上找到的讀取ID檔Class。
NotesID Class
利用它存取ID檔並觸發密碼驗證,之後再比對是否與現行ID相符以達成身份驗證的目的。
p.s.1.寫在postopen中是因為DB必須先開啟,才能用UI去Close
p.s.2.要調用myID.internationalPublicKey才會觸發密碼驗證。

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

沒有留言: