Rumah >Java >javaTutorial >Bagaimana untuk mengintegrasikan Shiro dalam SpringBoot
Integrasi asli
Buat projek
Buat projek Spring Boot, cuma tambah kebergantungan Web:
Selepas projek berjaya dibuat, tambahkan kebergantungan berkaitan Shiro Kebergantungan dalam fail pom.xml yang lengkap adalah seperti berikut:
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.apache.shiro</groupid> <artifactid>shiro-web</artifactid> <version>1.4.0</version> </dependency> <dependency> <groupid>org.apache.shiro</groupid> <artifactid>shiro-spring</artifactid> <version>1.4.0</version> </dependency> </dependencies>
Buat Alam
Seterusnya, mari sesuaikan Realm komponen teras:public class MyRealm extends AuthorizingRealm { @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { return null; } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal(); if (!"javaboy".equals(username)) { throw new UnknownAccountException("账户不存在!"); } return new SimpleAuthenticationInfo(username, "123", getName()); } }Hanya laksanakan operasi pengesahan mudah dalam Realm tanpa kebenaran Kaedah penulisan khusus untuk kebenaran adalah sama seperti Shiro dalam SSM, jadi saya tidak akan pergi ke butiran. Pengesahan di sini bermakna nama pengguna mestilah javaboy dan kata laluan pengguna mestilah 123. Jika syarat ini dipenuhi, anda boleh log masuk dengan jayanya!
Konfigurasikan Shiro
Seterusnya, konfigurasikan Shiro:@Configuration public class ShiroConfig { @Bean MyRealm myRealm() { return new MyRealm(); } @Bean SecurityManager securityManager() { DefaultWebSecurityManager manager = new DefaultWebSecurityManager(); manager.setRealm(myRealm()); return manager; } @Bean ShiroFilterFactoryBean shiroFilterFactoryBean() { ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean(); bean.setSecurityManager(securityManager()); bean.setLoginUrl("/login"); bean.setSuccessUrl("/index"); bean.setUnauthorizedUrl("/unauthorizedurl"); Map<string> map = new LinkedHashMap(); map.put("/doLogin", "anon"); map.put("/**", "authc"); bean.setFilterChainDefinitionMap(map); return bean; } }</string>Konfigurasikan Shiro di sini terutamanya untuk mengkonfigurasi 3 biji:
@RestController public class LoginController { @PostMapping("/doLogin") public void doLogin(String username, String password) { Subject subject = SecurityUtils.getSubject(); try { subject.login(new UsernamePasswordToken(username, password)); System.out.println("登录成功!"); } catch (AuthenticationException e) { e.printStackTrace(); System.out.println("登录失败!"); } } @GetMapping("/hello") public String hello() { return "hello"; } @GetMapping("/login") public String login() { return "please login!"; } }Apabila menguji, mula-mula akses antara muka /hello Memandangkan anda tidak log masuk, ia akan melompat secara automatik Pergi ke antara muka /login: Kemudian panggil antara muka /doLogin untuk melengkapkan log masuk: Lawati antara muka /hello sekali lagi, cuma Boleh diakses dengan jayanya:
Gunakan Shiro Starter
Kaedah konfigurasi di atas sebenarnya setara kepada konfigurasi XML dalam SSM Dapatkan Spring Boot dan tulis semula dalam kod Java Selain kaedah ini, kami juga boleh terus menggunakan Starter yang disediakan secara rasmi oleh Shiro. Buat projek seperti di atas Selepas berjaya dibuat, tambah , kebergantungan ini boleh menggantikan dua kebergantungan sebelumnya shiro-spring-boot-web-starter
dan shiro-web
, fail pom.xml adalah seperti berikut :shiro-spring
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.apache.shiro</groupid> <artifactid>shiro-spring-boot-web-starter</artifactid> <version>1.4.0</version> </dependency> </dependencies>
Create Realm
Alam di sini adalah sama seperti dahulu, jadi saya tidak akan menjelaskan secara terperinci.Konfigurasikan maklumat asas Shiro
Seterusnya, konfigurasikan maklumat asas Shiro dalam application.properties:shiro.sessionManager.sessionIdCookieEnabled=true shiro.sessionManager.sessionIdUrlRewritingEnabled=true shiro.unauthorizedUrl=/unauthorizedurl shiro.web.enabled=true shiro.successUrl=/index shiro.loginUrl=/loginPenjelasan konfigurasi:
rreeee
Atas ialah kandungan terperinci Bagaimana untuk mengintegrasikan Shiro dalam SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!