當柳上原的風吹向天際的時候...
真正的快樂來源于創(chuàng)造
BlogJava
::
首頁
::
聯系
::
聚合
::
管理
368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
公告
常用鏈接
我的隨筆
我的文章
我的評論
我的參與
最新評論
留言簿
(3)
給我留言
查看公開留言
查看私人留言
隨筆分類
Algorithm
C/C++/VC(2)
CSS(8)
DB(10)
Dojo(1)
HTML(2)
IIS(1)
Java(12)
JavaScript(15)
RSA(8)
Server(3)
SQL(2)
Teambiz(15)
WMB(21)
相冊
8thCisis
SqlToolBox
相冊一
個人常用鏈接
51CTO
Box網絡上傳下載
CSDN
IP地址手機號查詢
VOA English
VVG的前端設計
前端設計師聶微東
多特軟件站
大連停水信息
大連建設網
常用Jar包對照表
常用網址總匯
招商銀行
站長站圖標下載
綠軟發(fā)布頁
網頁模板下載
網頁模板之家(65)
最新隨筆
1.?此博停止更新
2.?給DB2增加刪除字段二三事
3.?連接到DB2數據庫并向其中導入數據
4.?ZT:DB2 SQL 消息(3000-6999)
5.?DB21061E 未初始化命令行環(huán)境的解決
6.?DB2無法在Win7上安裝的解決
7.?ZT:SQL4414N “DB2 管理服務器”處于不活動狀態(tài) 的處理
8.?如何處理DB2JAVIT:RC=9505問題
9.?T410不能換上1600的DDr3內存
10.?WIN7中讓任務欄項目別合并
積分與排名
積分 - 393142
排名 - 145
最新評論
1.?re: 使用MD5對存放在數據庫中用戶密碼進行保護[未登錄]
請問一下你那個service.hasSameName(name) 里面的service 是哪里得到的?
--Dr
2.?re: 在頁面打開SWF文件的代碼
dsd
--ss
3.?re: 使用BarCode4j生成條形碼和二維碼的例程
zzzz
--zzz
4.?re: 對用戶密碼進行加鹽處理
老問題了,偶然間看到這個問題。為了不誤導別人希望提醒下后來者,加鹽不要用用戶名。用戶名同樣是可見的太容易逆推了,而且用戶名一變密碼就不行了。
--路人
5.?re: 在網絡通訊中采用混合方式對信息進行加密
你給的那個程序 代碼鏈接 打不開了
是不是 失效了 能不能再給個
--#123
閱讀排行榜
1.?用Wireshark從http數據包中得到用戶的登錄信息(52908)
2.?對用戶密碼進行加鹽處理(11809)
3.?使用RSA進行信息加密解密的WebService示例(11038)
4.?實現子Div在父Div中水平居中的一種方法(10275)
5.?Spring在Web應用中的配置(8644)
在簡單值權限系統(tǒng)中使用Annotation替代了原來處于XML中的值設置
首先定義一個Annotation
package
com.heyang.anno;
import
java.lang.annotation.ElementType;
import
java.lang.annotation.Retention;
import
java.lang.annotation.RetentionPolicy;
import
java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public
@
interface
PrivilegeFor
{
int
value()
default
0
;
}
其次在接口IDocService中使用這個Annotation設定執(zhí)行方法所需要的權限值:
package
com.heyang.service;
import
com.heyang.anno.PrivilegeFor;
import
com.heyang.domain.Doc;
import
com.heyang.domain.User;
/** */
/**
* DocService需要實現的接口
*
@author
何楊(heyang78@gmail.com)
*
*
@since
2008-12-30 下午05:16:17
*
@version
1.00
*/
public
interface
IDocService
{
/** */
/**
* 用戶user添加一個文檔doc
*
@param
doc
*
@param
user
*/
@PrivilegeFor(value
=
20
)
public
void
add(Doc doc,User user);
/** */
/**
* 用戶user刪除一個文檔doc
*
@param
doc
*
@param
user
*/
@PrivilegeFor(
60
)
public
void
delete(Doc doc,User user);
/** */
/**
* 用戶user更新一個文檔doc
*
@param
doc
*
@param
user
*/
@PrivilegeFor(value
=
40
)
public
void
update(Doc doc,User user);
}
其三,在前置通知權限控制類中通過Annotation反射API得到方法需要的權限值,再根據用戶的權限值進行權限判定,不滿足則拋出異常,這樣權限不足的用戶將無法訪問DocService的相應方法。
package
com.heyang.service;
import
java.lang.reflect.Method;
import
org.springframework.aop.MethodBeforeAdvice;
import
com.heyang.anno.PrivilegeFor;
import
com.heyang.domain.User;
import
com.heyang.exception.PrivilegeNotEnoughException;
/** */
/**
* 實現權限子系統(tǒng)
*
@author
: 何楊(heyang78@gmail.com)
* @date: 2009-1-2-下午04:19:13
*/
public
class
PrivilegeService
implements
MethodBeforeAdvice
{
/** */
/**
* 在IDocService的實際方法開始前進行前置處理--權限檢查
*/
public
void
before(Method arg0, Object[] arg1, Object arg2)
throws
Throwable
{
//
取得方法名
String mothodName
=
arg0.getName();
//
取得方法的標注
PrivilegeFor privilegeFor
=
arg0.getAnnotation(PrivilegeFor.
class
);
if
(privilegeFor
!=
null
)
{
//
取得標注的值(即執(zhí)行方法所需要的權限)
int
value
=
privilegeFor.value();
//
取得用戶權限
User user
=
(User)arg1[
1
];
int
userPrivilegeValue
=
user.getPrivilegePoint();
//
權限判斷
if
(userPrivilegeValue
<=
value)
{
throw
new
PrivilegeNotEnoughException(
"
用戶權限必須達到
"
+
value
+
"
才能執(zhí)行
"
+
mothodName
+
"
操作
"
);
}
}
}
}
最后的結果和XML設置的方案是一致的。
示例執(zhí)行代碼如下:
ApplicationContext ctx
=
new
ClassPathXmlApplicationContext(
"
context.xml
"
);
IDocService docService
=
(IDocService)ctx.getBean(
"
docServiceProxy
"
);
Doc doc
=
new
Doc(
"
論美國次貸危機的產生及影響
"
);
User user
=
new
User(
"
中科院經濟所研究員郭德綱
"
,
50
);
//
用戶向系統(tǒng)添加文章
try
{
docService.add(doc, user);
}
catch
(PrivilegeNotEnoughException ex)
{
System.out.println(ex.getMessage());
}
//
用戶向系統(tǒng)更新文章
try
{
doc.setName(
"
論美國次貸危機的產生及影響和我國應該采取的應對措施
"
);
docService.update(doc, user);
}
catch
(PrivilegeNotEnoughException ex)
{
System.out.println(ex.getMessage());
}
//
用戶從系統(tǒng)撒刪除文章
try
{
docService.delete(doc, user);
}
catch
(PrivilegeNotEnoughException ex)
{
System.out.println(ex.getMessage());
}
}
執(zhí)行效果
:
將文件 名
=
論美國次貸危機的產生及影響交由dao處理(存入數據庫)
將文件 名
=
論美國次貸危機的產生及影響和我國應該采取的應對措施交由dao處理(更新數據庫中對應的記錄)
用戶權限必須達到60才能執(zhí)行delete操作
代碼下載
:
http://www.tkk7.com/Files/heyang/PrivilegeAnnotation20090106155940.rar
http://www.tkk7.com/Files/heyang/PrivilegeAnnotation220090108213912.rar
需要自行載入的包
為:
commons-logging-1.0.4.jar,log4j-1.2.14.jar,spring.jar,mysql-connector-java-5.0.6-bin.jar
posted on 2009-01-06 15:59
何楊
閱讀(476)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Copyright @ 何楊
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
主站蜘蛛池模板:
午夜一级免费视频
|
牛牛在线精品观看免费正
|
亚洲色大成网站WWW久久九九
|
亚洲人成色7777在线观看不卡
|
亚洲综合图片小说区热久久
|
亚洲国产香蕉人人爽成AV片久久
|
久久受www免费人成_看片中文
|
欧洲人成在线免费
|
一级黄色免费网站
|
精品国产日韩亚洲一区在线
|
亚洲综合校园春色
|
亚洲最大黄色网站
|
亚洲综合激情六月婷婷在线观看
|
亚洲av无码专区在线播放
|
亚洲热妇无码AV在线播放
|
国产精品亚洲美女久久久
|
国产91久久久久久久免费
|
免费黄色app网站
|
成年男女男精品免费视频网站
|
99久久免费国产香蕉麻豆
|
2021在线永久免费视频
|
一区二区三区在线免费看
|
a级在线观看免费
|
中国一级毛片免费看视频
|
久久精品成人免费观看97
|
久久性生大片免费观看性
|
91精品成人免费国产
|
成在线人免费无码高潮喷水
|
国产成人高清精品免费观看
|
一级特级aaaa毛片免费观看
|
亚洲欧洲无码AV电影在线观看
|
亚洲精品色播一区二区
|
亚洲色一区二区三区四区
|
亚洲影院天堂中文av色
|
亚洲精品无码久久久久YW
|
亚洲精品天堂成人片AV在线播放
|
亚洲aⅴ无码专区在线观看
|
激情婷婷成人亚洲综合
|
成人久久久观看免费毛片
|
一个人看的免费观看日本视频www
|
中文字幕看片在线a免费
|