在WF中使用角色

2021-09-22 10:44:12 字數 4232 閱讀 5028

wf提供了一種用於對所有支援資料輸入的活動的、基於角色的訪問機制。工作流建立者可以完全控制如何建立角色和角色集合。這樣將使建立者能夠提供必

要的授權機制,在執行活動之前驗證呼叫者的角色。比如wf中的webserviceinputactivity 和 handleexternaleventactivity活動。

wf中提供來兩種方式:activedirectoryrole(通過活動目錄使用者)和webworkflowrole(asp.net role)。下面舉例說明:

1.我們使用handleexternaleventactivity活動來提供圖書檢索功能,當有人檢索的時候會觸發檢索事件,只有會員才可以使用該功能。首先來定義事件引數:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.workflow.activities;

namespace carywfrole

public string name

public string author

public bookeventargs()

: base(guid.newguid())

public bookeventargs(guid instanceid, string id, string name, string author)

: base(instanceid)}}

2.事件介面如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.workflow.activities;

namespace carywfrole

}

3.實現該介面,**如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.security.principal;

namespace carywfrole

", identity.name);

if (searchbook != null)

searchbook(null, args);}}

}

4.工作流設計如下:

通過設定檢索事件(handleexternaleventactivity)活動的的roles屬性來控制,只有該角色集合的使用者才有許可權。在工作流中我們只允許會員才可以做

檢索,**如下:

using system;

using system.componentmodel;

using system.componentmodel.design;

using system.collections;

using system.drawing;

using system.linq;

using system.workflow.componentmodel.compiler;

using system.workflow.componentmodel.serialization;

using system.workflow.componentmodel;

using system.workflow.componentmodel.design;

using system.workflow.runtime;

using system.workflow.activities;

using system.workflow.activities.rules;

namespace carywfrole

private

workflowrolecollection sallowroles = new

workflowrolecollection();

public

workflowrolecollection allowroles

}private void codeactivity1_executecode(object sender, eventargs e)

private void handleexternaleventactivity1_invoked(object sender, externaldataeventargs e)}}

5.通過如下函式來建立角色和使用者,**如下:
static void createroles()

; string clerkrole = ;

system.web.security.roles.adduserstoroles(users, clerkrole);

}

}

6.假設以張三的身份來檢索,觸發事件的函式如下:
static void sendsearchrequest()

catch (exception e)

", e.tostring());}}

7.宿主程式如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading;

using system.workflow.runtime;

using system.workflow.runtime.hosting;

using system.security.principal;

using system.workflow.activities;

namespace carywfrole

}static void onworkflowcompleted(object sender, workflowcompletedeventargs e)

static void onworkflowterminated(object sender, workflowterminatedeventargs e)}}

xml 

version

="1.0" encoding

="utf-8" ?>

<

configuration

>

<

connectionstrings

>

<

add

name

="sqlserverconnection"

connectionstring

="integrated security = sspi;server=.;database=aspnetdb" />

connectionstrings

>

<

system.web

>

<

rolemanager

enabled

="true" defaultprovider

="sqlprovider">

<

providers

>

<

add

name

="sqlprovider" connectionstringname

="sqlserverconnection"

="system.web.security.sqlroleprovider,

system.web, version=2.0.3600.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" />

providers

>

rolemanager

>

system.web

>

configuration

>

9.執行結果如下:

在中使用SQLDMO

曾幾何時,夥伴們為的公升級傷透了腦筋.往往程式的公升級趕不上資料庫的公升級 版本控制的好,這也許不是什麼問題,但對於很大一部分中國公司來說這是無法避免的 而有些n久以前的資料庫要使用新程式的時候,資料庫的公升級簡直就是無從下手.所以對比資料庫公升級的緊要性就逐漸的凸現出來.對於表和字段的公升級按道理...

在ClanLib中使用blend func

本文是對blend func完全沒有認識的人寫的,就好象一天前的我一樣。廢話我就留到後面才說吧。在clanlib庫中的cl su ce與cl sprite中都會有 這個函式 void set blend func cl blendfunc src,cl blendfunc dest 其cl blen...

在MFC中使用Tab Control

說實話,我剛開始看見tab control的時候,覺得很簡單。哪知道用了一下,才發現自己錯了。要用好它,還是需要一些技巧的。經過網上搜尋資料,以及我自己的摸索,把一些要點記錄在這裡。tab control的執行效果有點像property sheet,但兩者還是有一些區別。我的理解就是property...