ÀÖÓãµç¾º


½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

shiroȨÏÞУÑé

¸üÐÂʱ¼ä:2018Äê08ÔÂ31ÈÕ14ʱ01·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:

¡¡¡¡Ò»¡¢Shiro½éÉÜ

¡¡¡¡1¡¢Apache ShiroÊÇÒ»¸öÇ¿´óÇÒÒ×ÓõÄJava°²È«¿ò¼Ü,Ö´ÐÐÉí·ÝÑéÖ¤¡¢ÊÚȨ¡¢ÃÜÂëѧºÍ»á»°¹ÜÀí¡£

¡¡¡¡2¡¢Ê¹ÓÃShiroµÄÒ×ÓÚÀí½âµÄAPI,Äú¿ÉÒÔ¿ìËÙ¡¢ÇáËɵػñµÃÈκÎÓ¦ÓóÌÐò,´Ó×îСµÄÒÆ¶¯Ó¦ÓóÌÐòµ½×î´óµÄÍøÂçºÍÆóÒµÓ¦ÓóÌÐò

¡¡¡¡¶þ¡¢ShiroÌåϵ½á¹¹

¡¡¡¡1¡¢ Authentication ÈÏÖ¤ ©\©\©\©\ Óû§µÇ¼£¬Éí·Ýʶ±ð

¡¡¡¡2¡¢ Authorization ÊÚȨ ©\©\©\ Óû§¾ßÓÐÄÄЩȨÏÞ¡¢½ÇÉ«

¡¡¡¡3¡¢ Cryptography °²È«Êý¾Ý¼ÓÃÜ

¡¡¡¡4¡¢ Session Management »á»°¹ÜÀí

¡¡¡¡5¡¢ Web Integration web ϵͳ¼¯³É

¡¡¡¡6¡¢ Integrations ¼¯³ÉÆäËüÓ¦Ó㬠spring¡¢»º´æ¿ò¼Ü

¡¡¡¡Èý¡¢ShiroÖ÷ÒªÔËÐÐÁ÷³Ì

¡¡¡¡Ó¦ÓóÌÐò ©\©\©\ Subject ©\©\©\ SecurityManager ©\©\©\ Realm ©\©\©\ °²È«Êý¾Ý(Êý¾Ý¿â)

¡¡¡¡Subject½éÉÜ£º

¡¡¡¡1¡¢Subject ÊÇÓë³ÌÐò½øÐн»»¥µÄ¶ÔÏ󣬿ÉÒÔÊÇÈËÒ²¿ÉÒÔÊÇ·þÎñ»òÕ߯äËû£¬Í¨³£¾ÍÀí½âΪÓû§¡£

¡¡¡¡2¡¢ËùÓÐ Subject ʵÀý¶¼±»°ó¶¨µ½(ÇÒÕâÊDZØÐëµÄ)Ò»¸ö SecurityManager ÉÏ¡£µ±ÄãÓëÒ»¸öSubject ½»»¥Ê±£¬ÄÇЩ½»»¥×÷ÓÃת»¯ÎªÓë SecurityManager ½»»¥µÄÌØ¶¨ subject µÄ½»»¥×÷Óá£

¡¡¡¡SecurityManager½éÉÜ£º

¡¡¡¡1¡¢SecurityManager ÊÇ ShiroµÄºËÐÄ£¬³õʼ»¯Ê±Ð­µ÷¸÷¸öÄ£¿éÔËÐС£È»¶ø£¬Ò»µ© SecurityManagerЭµ÷Íê±Ï£¬SecurityManager »á±»µ¥¶ÀÁôÏ£¬ÇÒÎÒÃÇÖ»ÐèҪȥ²Ù×÷Subject¼´¿É£¬ÎÞÐè²Ù×÷SecurityManager ¡£

¡¡¡¡2¡¢µ±ÎÒÃÇÕýÓëÒ»¸ö Subject ½øÐн»»¥Ê±£¬ÊµÖÊÉÏÊÇ SecurityManagerÔÚ´¦Àí Subject °²È«²Ù×÷¡£

¡¡¡¡Realm½éÉÜ£º

¡¡¡¡1¡¢Realms µ£µ± Shiro ºÍÄãµÄÓ¦ÓóÌÐòµÄ°²È«Êý¾ÝÖ®¼äµÄ“ÇÅÁº”»ò“Á¬½ÓÆ÷”¡£µ±Ëüʵ¼ÊÉÏÓ밲ȫÏà¹ØµÄÊý¾ÝÈçÓÃÀ´Ö´ÐÐÉí·ÝÑéÖ¤(µÇ¼)¼°ÊÚȨ(·ÃÎÊ¿ØÖÆ)µÄÓû§ÕÊ»§½»»¥Ê±£¬ Shiro ´ÓÒ»¸ö»ò¶à¸öΪӦÓóÌÐòÅäÖõÄRealm ÖÐѰÕÒÐí¶àÕâÑùµÄ¶«Î÷¡£

¡¡¡¡2¡¢ÔÚÕâ¸öÒâÒåÉÏ˵£¬ Realm ±¾ÖÊÉÏÊÇÒ»¸öÌØ¶¨°²È«µÄ DAO£ºËü·â×°ÁËÊý¾ÝÔ´µÄÁ¬½ÓÏêϸÐÅÏ¢£¬Ê¹ Shiro ËùÐèµÄÏà¹ØµÄÊý¾Ý¿ÉÓᣵ±ÅäÖà Shiro ʱ£¬Äã±ØÐëÖ¸¶¨ÖÁÉÙÒ»¸ö Realm ÓÃÀ´½øÐÐÉí·ÝÑéÖ¤ºÍ/»òÊÚȨ¡£ SecurityManager¿ÉÄÜÅäÖöà¸ö Realms£¬µ«ÖÁÉÙÓÐÒ»¸öÊDZØÐëµÄ

¡¡¡¡ËÄ¡¢ShiroµÄʹÓÃ

¡¡¡¡1¡¢ ÅäÖà web.xml£¬Ôö¼ÓshiroµÄFilter

¡¡¡¡2¡¢ÔÚspringÅäÖÃÎļþÖУ¬Ôö¼ÓshiroµÄÏà¹ØÅäÖÃ

¡¡¡¡shiroFilter

¡¡¡¡org.springframework.web.filter.DelegatingFilterProxy

¡¡¡¡shiroFilter

¡¡¡¡/*

¡¡¡¡class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">

¡¡¡¡/login.html* = anon

¡¡¡¡/user_login.action* = anon

¡¡¡¡/validatecode.jsp* = anon

¡¡¡¡/css/** = anon

¡¡¡¡/js/** = anon

¡¡¡¡/images/** = anon

¡¡¡¡/services/** = anon

¡¡¡¡/pages/base/courier.html* = perms[courier:list]

¡¡¡¡/pages/base/area.html* = roles[base]

¡¡¡¡/** = authc

¡¡¡¡class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">

¡¡¡¡±±¾©ÊвýÆ½Çø½¨²Ä³ÇÎ÷·½ðÑàÁú°ì¹«Â¥Ò»²ã µç»°£º400-618-9090

¡¡¡¡3¡¢±àдrealm

¡¡¡¡public class BosRealm extends AuthorizingRealm {

¡¡¡¡@Autowired

¡¡¡¡private UserService userService;

¡¡¡¡@Autowired

¡¡¡¡private RoleService roleService;

¡¡¡¡@Autowired

¡¡¡¡private PermissionService permissionService;

¡¡¡¡@Override

¡¡¡¡// ÊÚȨ...

¡¡¡¡protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection pc) {

¡¡¡¡System.out.println("shiro ÊÚȨ¹ÜÀí...");

¡¡¡¡SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();

¡¡¡¡// ¸ù¾Ýµ±Ç°µÇ¼Óû§ ²éѯ¶ÔÓ¦½ÇÉ«ºÍȨÏÞ

¡¡¡¡Subject subject = SecurityUtils.getSubject();

¡¡¡¡User user = (User) subject.getPrincipal();

¡¡¡¡// µ÷ÓÃÒµÎñ²ã£¬²éѯ½ÇÉ«

¡¡¡¡List roles = roleService.findByUser(user);

¡¡¡¡for (Role role : roles) {

¡¡¡¡authorizationInfo.addRole(role.getKeyword());

¡¡¡¡} /

¡¡¡¡/ µ÷ÓÃÒµÎñ²ã£¬²éѯȨÏÞ

¡¡¡¡List permissions = permissionService.findByUser(user);

¡¡¡¡for (Permission permission : permissions) {

¡¡¡¡authorizationInfo.addStringPermission(permission.getKeyword());

¡¡¡¡} r

¡¡¡¡eturn authorizationInfo;

¡¡¡¡} @

¡¡¡¡Override

¡¡¡¡// ÈÏÖ¤...

¡¡¡¡protected AuthenticationInfo doGetAuthenticationInfo(

¡¡¡¡AuthenticationToken token) throws AuthenticationException {

¡¡¡¡System.out.println("shiro ÈÏÖ¤¹ÜÀí... ");

¡¡¡¡// ת»»token

¡¡¡¡UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;

¡¡¡¡// ¸ù¾ÝÓû§Ãû ²éѯ Óû§ÐÅÏ¢

¡¡¡¡User user = userService.findByUsername(usernamePasswordToken

¡¡¡¡.getUsername());

¡¡¡¡if (user == null) {

¡¡¡¡// Óû§Ãû²»´æÔÚ

¡¡¡¡// ²ÎÊýÒ»£º ÆÚÍûµÇ¼ºó£¬±£´æÔÚSubjectÖÐÐÅÏ¢

¡¡¡¡±±¾©ÊвýÆ½Çø½¨²Ä³ÇÎ÷·½ðÑàÁú°ì¹«Â¥Ò»²ã µç»°£º400-618-9090

¡¡¡¡Î塢ȨÏÞ¿ØÖƱí½á¹¹

¡¡¡¡// ²ÎÊý¶þ£º Èç¹û·µ»ØÎªnull ˵Ã÷Óû§²»´æÔÚ£¬±¨Óû§Ãû

¡¡¡¡// ²ÎÊýÈý £ºrealmÃû³Æ

¡¡¡¡return null;

¡¡¡¡} else {

¡¡¡¡// Óû§Ãû´æÔÚ

¡¡¡¡// µ±·µ»ØÓû§ÃÜÂëʱ£¬securityManager°²È«¹ÜÀíÆ÷£¬×Ô¶¯±È½Ï·µ»ØÃÜÂëºÍÓû§ÊäÈëÃÜÂëÊÇ·ñ

¡¡¡¡Ò»ÖÂ

¡¡¡¡// Èç¹ûÃÜÂëÒ»Ö µÇ¼³É¹¦£¬ Èç¹ûÃÜÂë²»Ò»Ö ±¨ÃÜÂë´íÎóÒì³£

¡¡¡¡return new SimpleAuthenticationInfo(user, user.getPassword(),

¡¡¡¡getName());

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}



×÷ÕߣºÀÖÓã²¥¿ÍJavaEEÅàѵѧԺ
Ê×·¢£ºhttp://java.itcast.cn

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿