IDEA 快速构建一个 SpringBoot+Shiro项目 并打包
1、创建一个项目

2、选择对应的jdk版本和spring initializr(表示创建的是spring boot项目)

3、选择打包的类型(这里选择的是jar包,也可以选择war包),jdk的版本,以及一些配置信息

4、这里springboot的版本选择和个人的环境有关,也可以后续在pom.xml文件中修改

5、由于我这里需要的spring boot 版本是2.2.6.RELEASE,所以这里需要在pom.xml文件中修改

6、添加项目依赖(因个人项目而异)
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-tomcat</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!--指定shiro版本为1.5.2-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
7、配置maven仓库

8、新建java类
LoginController.java
package com.lehend.shiroauth;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@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("success");
} catch (AuthenticationException e) {
e.printStackTrace();
System.out.println("failed");
}
}
@GetMapping("/admin/{name}")
public String hello(@PathVariable String name) {
return "admin page";
}
@GetMapping("/login")
public String login() {
return "please login!";
}
}
MyRealm.java
package com.lehend.shiroauth;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
public class MyRealm extends AuthorizingRealm {
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
return null;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
String username = (String) authenticationToken.getPrincipal();
if (!"java".equals(username)){
throw new UnknownAccountException("unkown user");
}
return new SimpleAuthenticationInfo(username, "123", getName());
}
}
ShiroConfig.java
package com.lehend.shiroauth;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.LinkedHashMap;
import java.util.Map;
@Configuration
public class ShiroConfig {
@Bean
MyRealm myRealm() {
return new MyRealm();
}
@Bean
DefaultWebSecurityManager 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, String> map = new LinkedHashMap<>();
map.put("/doLogin", "anon");
//admin下的路径需要登录才能访问
map.put("/admin/*", "authc");
bean.setFilterChainDefinitionMap(map);
return bean;
}
}
修改ShiroauthApplication.java为如下内容:
package com.lehend.shiroauth;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class ShiroauthApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ShiroauthApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ShiroauthApplication.class, args);
}
}
9、在application.properties中填写如下内容
#配置程序端口,默认为8080
server.port= 8099
#用户绘画session过期时间,以秒为单位
server.servlet.session.timeout=
# 配置默认访问路径,默认为/
server.servlet.context-path=/test/
# 配置Tomcat编码,默认为UTF-8
server.tomcat.uri-encoding=UTF-8
# 配置最大线程数
server.tomcat.max-threads=1000
10、刷新,如果maven本地仓库没有对应jar包就会去远程仓库下载

11、启动环境,可以看到环境成功启动,端口为application.properties配置的8099


12、访问首页(需要添加上test)
http://127.0.0.1:8099/test/


13、如果想要打包,可以点击maven的package
可以看到项目会在target目录下成功打为一个jar包


14、jar包可以通过java -jar进行运行

浙公网安备 33010602011771号