當(dāng)柳上原的風(fēng)吹向天際的時候...
真正的快樂來源于創(chuàng)造
BlogJava
::
首頁
::
聯(lián)系
::
聚合
::
管理
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網(wǎng)絡(luò)上傳下載
CSDN
IP地址手機(jī)號查詢
VOA English
VVG的前端設(shè)計(jì)
前端設(shè)計(jì)師聶微東
多特軟件站
大連停水信息
大連建設(shè)網(wǎng)
常用Jar包對照表
常用網(wǎng)址總匯
招商銀行
站長站圖標(biāo)下載
綠軟發(fā)布頁
網(wǎng)頁模板下載
網(wǎng)頁模板之家(65)
最新隨筆
1.?此博停止更新
2.?給DB2增加刪除字段二三事
3.?連接到DB2數(shù)據(jù)庫并向其中導(dǎo)入數(shù)據(jù)
4.?ZT:DB2 SQL 消息(3000-6999)
5.?DB21061E 未初始化命令行環(huán)境的解決
6.?DB2無法在Win7上安裝的解決
7.?ZT:SQL4414N “DB2 管理服務(wù)器”處于不活動狀態(tài) 的處理
8.?如何處理DB2JAVIT:RC=9505問題
9.?T410不能換上1600的DDr3內(nèi)存
10.?WIN7中讓任務(wù)欄項(xiàng)目別合并
積分與排名
積分 - 393111
排名 - 145
最新評論
1.?re: 使用MD5對存放在數(shù)據(jù)庫中用戶密碼進(jìn)行保護(hù)[未登錄]
請問一下你那個service.hasSameName(name) 里面的service 是哪里得到的?
--Dr
2.?re: 在頁面打開SWF文件的代碼
dsd
--ss
3.?re: 使用BarCode4j生成條形碼和二維碼的例程
zzzz
--zzz
4.?re: 對用戶密碼進(jìn)行加鹽處理
老問題了,偶然間看到這個問題。為了不誤導(dǎo)別人希望提醒下后來者,加鹽不要用用戶名。用戶名同樣是可見的太容易逆推了,而且用戶名一變密碼就不行了。
--路人
5.?re: 在網(wǎng)絡(luò)通訊中采用混合方式對信息進(jìn)行加密
你給的那個程序 代碼鏈接 打不開了
是不是 失效了 能不能再給個
--#123
閱讀排行榜
1.?用Wireshark從http數(shù)據(jù)包中得到用戶的登錄信息(52908)
2.?對用戶密碼進(jìn)行加鹽處理(11809)
3.?使用RSA進(jìn)行信息加密解密的WebService示例(11038)
4.?實(shí)現(xiàn)子Div在父Div中水平居中的一種方法(10275)
5.?Spring在Web應(yīng)用中的配置(8644)
在簡單值權(quán)限系統(tǒng)中使用Annotation替代了原來處于XML中的值設(shè)置
首先定義一個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設(shè)定執(zhí)行方法所需要的權(quán)限值:
package
com.heyang.service;
import
com.heyang.anno.PrivilegeFor;
import
com.heyang.domain.Doc;
import
com.heyang.domain.User;
/** */
/**
* DocService需要實(shí)現(xiàn)的接口
*
@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);
}
其三,在前置通知權(quán)限控制類中通過Annotation反射API得到方法需要的權(quán)限值,再根據(jù)用戶的權(quán)限值進(jìn)行權(quán)限判定,不滿足則拋出異常,這樣權(quán)限不足的用戶將無法訪問DocService的相應(yīng)方法。
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;
/** */
/**
* 實(shí)現(xiàn)權(quán)限子系統(tǒng)
*
@author
: 何楊(heyang78@gmail.com)
* @date: 2009-1-2-下午04:19:13
*/
public
class
PrivilegeService
implements
MethodBeforeAdvice
{
/** */
/**
* 在IDocService的實(shí)際方法開始前進(jìn)行前置處理--權(quán)限檢查
*/
public
void
before(Method arg0, Object[] arg1, Object arg2)
throws
Throwable
{
//
取得方法名
String mothodName
=
arg0.getName();
//
取得方法的標(biāo)注
PrivilegeFor privilegeFor
=
arg0.getAnnotation(PrivilegeFor.
class
);
if
(privilegeFor
!=
null
)
{
//
取得標(biāo)注的值(即執(zhí)行方法所需要的權(quán)限)
int
value
=
privilegeFor.value();
//
取得用戶權(quán)限
User user
=
(User)arg1[
1
];
int
userPrivilegeValue
=
user.getPrivilegePoint();
//
權(quán)限判斷
if
(userPrivilegeValue
<=
value)
{
throw
new
PrivilegeNotEnoughException(
"
用戶權(quán)限必須達(dá)到
"
+
value
+
"
才能執(zhí)行
"
+
mothodName
+
"
操作
"
);
}
}
}
}
最后的結(jié)果和XML設(shè)置的方案是一致的。
示例執(zhí)行代碼如下:
ApplicationContext ctx
=
new
ClassPathXmlApplicationContext(
"
context.xml
"
);
IDocService docService
=
(IDocService)ctx.getBean(
"
docServiceProxy
"
);
Doc doc
=
new
Doc(
"
論美國次貸危機(jī)的產(chǎn)生及影響
"
);
User user
=
new
User(
"
中科院經(jīng)濟(jì)所研究員郭德綱
"
,
50
);
//
用戶向系統(tǒng)添加文章
try
{
docService.add(doc, user);
}
catch
(PrivilegeNotEnoughException ex)
{
System.out.println(ex.getMessage());
}
//
用戶向系統(tǒng)更新文章
try
{
doc.setName(
"
論美國次貸危機(jī)的產(chǎn)生及影響和我國應(yīng)該采取的應(yīng)對措施
"
);
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í)行效果
:
將文件 名
=
論美國次貸危機(jī)的產(chǎn)生及影響交由dao處理(存入數(shù)據(jù)庫)
將文件 名
=
論美國次貸危機(jī)的產(chǎn)生及影響和我國應(yīng)該采取的應(yīng)對措施交由dao處理(更新數(shù)據(jù)庫中對應(yīng)的記錄)
用戶權(quán)限必須達(dá)到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ā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Copyright @ 何楊
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
主站蜘蛛池模板:
亚洲成在人线aⅴ免费毛片
|
13小箩利洗澡无码视频网站免费
|
91精品国产免费久久国语蜜臀
|
亚洲一区二区三区香蕉
|
91视频免费网站
|
亚洲精品成人片在线观看精品字幕
|
无码人妻一区二区三区免费视频
|
久久久久亚洲AV无码网站
|
女人隐私秘视频黄www免费
|
亚洲色精品aⅴ一区区三区
|
在线观看的免费网站无遮挡
|
久久亚洲AV午夜福利精品一区
|
中文字幕在线视频免费观看
|
日本午夜免费福利视频
|
亚洲av无码片vr一区二区三区
|
国产小视频在线免费
|
一级女性全黄久久生活片免费
|
国产精一品亚洲二区在线播放
|
久别的草原电视剧免费观看
|
亚洲视频小说图片
|
99re在线视频免费观看
|
久久久久亚洲AV无码专区体验
|
亚洲成A人片在线观看无码3D
|
成人免费视频一区二区
|
亚洲国产精品VA在线观看麻豆
|
久久国产高潮流白浆免费观看
|
亚洲一区二区三区成人网站
|
国产在线a不卡免费视频
|
中文字幕免费观看全部电影
|
亚洲综合久久1区2区3区
|
国产裸模视频免费区无码
|
www一区二区www免费
|
亚洲成人一级电影
|
四虎国产精品免费久久影院
|
免费精品久久天干天干
|
亚洲av一本岛在线播放
|
亚洲精品在线视频
|
91久久成人免费
|
亚洲阿v天堂在线2017免费
|
91亚洲国产成人久久精品
|
亚洲国产成人高清在线观看
|