我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > javaweb二进制实现权限管理
总共48087条微博

动态微博

查看: 1198|回复: 0

javaweb二进制实现权限管理

[复制链接]

114

主题

29

听众

429

金钱

传功长老

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-11-22 14:21:09 |只看该作者 |倒序浏览
直接给例子吧!例子中将讲解 1.权限表示 2.权限判断 3.添加权限 4.取消权限+ y3 ~: V. O: D
  1. public class Test {# q" S) f2 W) B, D5 ~
  2. % ~4 O+ i+ o& N6 j
  3.         /**
    3 _$ i' {/ u, X2 H6 D# w% Q' C/ S
  4.          * @param args4 B4 x9 q% p' n4 a$ M
  5.          */' J) \% a  z& s
  6.         public static void main(String[] args) {3 q3 K' V- ~( E
  7. 4 \$ k! m- `! N: ~" l3 S- k
  8.                 /**" f" t' Y6 s7 y' |4 z2 h% Z% S, X' U2 O
  9.                  * 四种权限 ,当前定义为int,以下二进制表示只取后四位作说明
    - {* r; \8 _1 w, _1 n1 M
  10.                  */3 i$ M0 S; G: o; K' ~" k
  11. * M5 L- T( ?' n" b7 u" q/ {
  12.                 // 添加
    & [' _% ~& [5 A# B  q) N
  13.                 int c = 1;// ...0001# p+ T! h: @- v# t' T+ V
  14.                 // 查询5 w7 x# w5 h5 P. f+ k
  15.                 int r = 2;// ...0010
    / w+ f& l2 Z  `% x. r* w0 m
  16.                 // 修改
    3 [0 M9 |3 h/ [) a  z' `3 r: W, p
  17.                 int u = 4;// ...0100
    * K! [% r2 Q2 U" \8 x
  18.                 // 删除1 |! h" O  z; ^( _. a5 }
  19.                 int d = 8;// ...1000
    7 q0 _9 L/ K9 i0 n6 E& t

  20. $ Q4 V  a" V/ p# E: ]# g5 s# G3 N, a
  21.                 /**
    " R7 k2 P8 \/ }
  22.                  * 2 f" r( u8 }( O1 @
  23.                  * 大家可以观察四种权限的二进制表示的规律 ,都是2的N次方,
    ! Q# l9 j* @3 g! k! ^2 z3 K
  24.                  * 就表示本身,添加权限有最后一位为其它为0,查询倒数第二位为1其它都为0,修改倒数第三个为1其它都为0,删除倒数第四个为1其它都为0
    ' X) ?+ `+ L) s. V
  25.                  * , h: `# J/ _. M1 k* B6 f
  26.                  */
    / F# Q, H3 Y& N- d, d
  27. + l4 Z4 z- g: d9 ?2 h/ [
  28.                 /**
    . U* z, S  L& s5 ^. u5 @
  29.                  *1111---- 这样表示有哪种权限时可以用 |(按位或) 操作
    4 Z' v/ j, i3 a% ]5 H
  30.                  * 8 {; @0 H5 l9 U* D+ M0 ]
  31.                  */
    " v# x5 E9 R4 m' D- Q
  32. ( T2 S; D0 w6 q" y
  33.                 // 用户A有添加和修改权限
    9 E$ @' t. V# }3 M& o
  34.                 int usera = c | r | u;
    $ \8 h% P' l* Q
  35. 1 N1 G6 N) ~. ^' U. e/ f6 l
  36.                 // 用户B有添加和删除权限
    . V7 a+ }9 `# V1 m
  37.                 int userb = c | d;
    ( I) U/ d0 C: v
  38. 5 K+ E/ ?4 o5 S6 |" C
  39.                 /**/ C, `, v( L% c5 E+ s7 ]
  40.                  * 2222---- 判断用户是否有某种权限用用户权限和要判断的权限进行 &(按位与) 操作,结果为要判断的权限值时表示用户有此权限,否则没有此权限0 K9 v" x2 N4 \* U0 \, h: ]
  41.                  */7 ?7 l9 H+ \- T/ E3 O3 Q
  42. . l  y  d  W. w: L, l8 p) |
  43.                 if ((usera & u) == u) {
    3 w7 e& A4 {. f$ o
  44.                         System.out.println("用户a有更新权限");
    3 a# r/ L$ l$ A& ^
  45.                 } else {
    $ F' Q3 t( y  y7 U+ C
  46.                         System.out.println("用户a没有有更新权限");
    ' t; _8 }( U5 R
  47.                 }) _% Z) b. Q8 i8 {! K
  48.   M' Q+ C7 V3 d5 ?2 E' S* ~
  49.                 /**
    9 K7 I: a2 N4 k  m
  50.                  * 3333---- 给用户添加权限用用户权限和要添加的权限|(按位或) 操作再覆盖之前权限值
    7 _# E: ^: b/ A- o) l
  51.                  */8 j8 w+ W# _& O* |- \

  52.   Z& r4 ]# E$ U- E' S4 c
  53.                 if ((userb & u) == u) {2 N& D8 u* g: |1 \7 e
  54.                         System.out.println("用户b有更新权限");8 V6 T- D# f4 _' G6 l, D' B  T
  55.                 } else {
    : Y5 N  g- m/ b" Y
  56.                         System.out.println("用户b没有更新权限");
    ) l/ w) ^9 C8 E
  57.                 }8 l" F8 C& h* r9 c' M! a

  58. ; @3 W  x5 h" D2 k/ L  Q, s1 A
  59.                 // 给用户b添加更新权限6 x5 X9 L: N% c% e# L5 D- Y
  60.                 userb = userb | u;
    6 I7 Y) f& H( @6 S

  61. - ~! y. H; G7 S, \
  62.                 if ((userb & u) == u) {0 Z- _' h2 H9 f/ j, c% U. R) k
  63.                         System.out.println("用户b有更新权限");
    9 s! _; l3 J3 j% K
  64.                 } else {9 ]7 D. K6 W+ b1 I- ~3 a
  65.                         System.out.println("用户b没有更新权限");/ X7 v! W8 F6 ^, f5 d4 X  d) \
  66.                 }! o) q6 a( B1 r3 A9 j

  67. 3 S8 k. N: c( |* o1 s0 w
  68.                 /**  C8 x& J/ u. _2 j
  69.                  * 4444---- 取消用户某种权限,用用户权限和要取消的权限按位取反后进行按位 操作,再覆盖之前权限值
    ! A4 Q( F* q9 }( W
  70.                  */
    9 [: J$ F+ k1 [3 S# S$ h
  71.                 1 g  L) i8 ~/ b5 J$ m, D
  72.                 if ((usera & r) == r) {
    / r+ g. g1 d3 b; \$ }  B
  73.                         System.out.println("用户a有查询权限");8 ]2 t5 J& I( Y) }
  74.                 } else {
    ; D) I4 T2 G- T& _/ G/ n5 U. J, I
  75.                         System.out.println("用户a没有查询权限");0 N, w* t. h7 j) [- ^4 T" @
  76.                 }
    0 r! G& c. `# x/ I& ~- {
  77.                
    ' O( T) h" A* V$ Z  N9 v( c
  78.                 //取消用户a的查询权限
    5 t+ E) y0 u9 f6 j
  79.                 usera = usera & (~r);/ ]* R1 j. ?& N% j$ A( }0 b
  80.                
    * S# c) N4 u$ Q# S4 n! ]
  81.                 if ((usera & r) == r) {
    , E2 ^2 z: C: s
  82.                         System.out.println("用户a有查询权限");+ ?# T, D0 l! _, ]; M
  83.                 } else {
    + b/ Z7 X: k9 p" \2 W
  84.                         System.out.println("用户a没有查询权限");: `/ R5 k8 B7 I( R
  85.                 }
    ' ~3 D# H5 y7 M+ [
  86.         }# a% g' o# s3 n% [8 ^
  87. ; v% {: ?, f# H2 v2 {
  88. }
    8 i: W/ l2 b9 p! P. _
复制代码

/ y8 F/ L2 X, F! n  l" {; U. H3 y+ X, H) a

# V' i# V& x+ q# ?- `, a+ M: a

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表