设为首页 收藏本站
查看: 931|回复: 0

[经验分享] shiro环境搭建

[复制链接]

尚未签到

发表于 2017-3-2 08:46:56 | 显示全部楼层 |阅读模式
参考shiro官方文档进行学习



http://shiro.apache.org/java-authentication-guide.html

1.环境搭建

采用eclipse + maven + jetty插件的方式

使用版本1.2.4

pom文件内容




1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3     <modelVersion>4.0.0</modelVersion>
4     <groupId>com.kite</groupId>
5     <artifactId>shiro</artifactId>
6     <packaging>war</packaging>
7     <version>0.0.1-SNAPSHOT</version>
8     <name>shiro Maven Webapp</name>
9     <url>http://maven.apache.org</url>
10     <properties>
11         <shiro.version>1.2.4</shiro.version>
12     </properties>
13     <dependencies>
14         <dependency>
15             <groupId>junit</groupId>
16             <artifactId>junit</artifactId>
17             <version>4.10</version>
18             <scope>test</scope>
19         </dependency>
20         <dependency>
21             <groupId>org.apache.shiro</groupId>
22             <artifactId>shiro-core</artifactId>
23             <version>${shiro.version}</version>
24         </dependency>
25         <dependency>
26             <groupId>org.apache.shiro</groupId>
27             <artifactId>shiro-web</artifactId>
28             <version>${shiro.version}</version>
29         </dependency>
30         <dependency>
31             <groupId>org.apache.shiro</groupId>
32             <artifactId>shiro-ehcache</artifactId>
33             <version>${shiro.version}</version>
34         </dependency>
35         <dependency>
36             <groupId>javax.servlet</groupId>
37             <artifactId>javax.servlet-api</artifactId>
38             <version>3.0.1</version>
39         </dependency>
40     </dependencies>
41     <build>
42         <finalName>shiro</finalName>
43         <plugins>
44             <!-- jetty插件 -->
45             <plugin>
46                 <groupId>org.mortbay.jetty</groupId>
47                 <artifactId>maven-jetty-plugin</artifactId>
48                 <version>6.1.5</version>
49                 <configuration>
50                     <webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>
51                     <scanIntervalSeconds>3</scanIntervalSeconds>
52                     <contextPath>/</contextPath>
53                     <connectors>
54                         <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
55                             <port>80</port>
56                         </connector>
57                     </connectors>
58                 </configuration>
59             </plugin>
60         </plugins>
61     </build>
62 </project>




web.xml配置



DSC0000.gif DSC0001.gif


1 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
3     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
4     version="2.4">
5     <display-name>Archetype Created Web Application</display-name>
6     <listener>
7         <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
8     </listener>
9
10     <filter>
11         <filter-name>ShiroFilter</filter-name>
12         <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
13     </filter>
14
15     <filter-mapping>
16         <filter-name>ShiroFilter</filter-name>
17         <url-pattern>/*</url-pattern>
18         <dispatcher>REQUEST</dispatcher>
19         <dispatcher>FORWARD</dispatcher>
20         <dispatcher>INCLUDE</dispatcher>
21         <dispatcher>ERROR</dispatcher>
22     </filter-mapping>
23     <servlet>
24         <servlet-name>LoginServlet</servlet-name>
25         <servlet-class>com.kite.servlet.LoginServlet</servlet-class>
26     </servlet>
27     <servlet-mapping>
28         <servlet-name>LoginServlet</servlet-name>
29         <url-pattern>/login</url-pattern>
30     </servlet-mapping>
31 </web-app>
View Code  shiro.ini配置后期会采用数据库的方式,只需要简单了解即可,users表示当前可用登录用户,urls表示连接, authc表示需要登录hour才能使用,anon表示无需登录就可以使用



1 [main]
2
3 [users]
4 kite=aaa123456
5 tom=kite
6 [urls]
7 /index.jsp=authc
8 /login.jsp=anon
9 /login=anon
10 /index=authc
  login.jsp页面  用来登录



<!DOCTYPE html>
<body>
<h2>Hello World!</h2>
<form action="login">
username:<input type="text" name="username" /><br/>
password:<input type="text" name="password" /><br/>
<input type="submit"/>
</form>
</body>
</html>
  loginServlet



1 package com.kite.servlet;
2
3 import java.io.IOException;
4
5 import javax.servlet.ServletException;
6 import javax.servlet.http.HttpServlet;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 import org.apache.shiro.SecurityUtils;
11 import org.apache.shiro.authc.AuthenticationException;
12 import org.apache.shiro.authc.ExcessiveAttemptsException;
13 import org.apache.shiro.authc.IncorrectCredentialsException;
14 import org.apache.shiro.authc.LockedAccountException;
15 import org.apache.shiro.authc.UnknownAccountException;
16 import org.apache.shiro.authc.UsernamePasswordToken;
17 import org.apache.shiro.subject.Subject;
18
19 /**
20  * Servlet implementation class LoginServlet
21  */
22 public class LoginServlet extends HttpServlet {
23     private static final long serialVersionUID = 1L;
24
25     /**
26      * @see HttpServlet#HttpServlet()
27      */
28     public LoginServlet() {
29         super();
30         // TODO Auto-generated constructor stub
31     }
32
33     /**
34      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
35      *      response)
36      */
37     protected void doGet(HttpServletRequest request,
38             HttpServletResponse response) throws ServletException, IOException {
39         this.doPost(request, response);
40     }
41
42     /**
43      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
44      *      response)
45      */
46     protected void doPost(HttpServletRequest request,
47             HttpServletResponse response) throws ServletException, IOException {
48         String username = request.getParameter("username");
49         String password = request.getParameter("password");
50         UsernamePasswordToken token = new UsernamePasswordToken(username,
51                 password);
52         Subject subject = SecurityUtils.getSubject();
53         String emsg = null;
54         try {
55             subject.login(token);
56         } catch (UnknownAccountException uae) {
57             emsg = "账号不存在";
58         } catch (IncorrectCredentialsException ice) {
59             emsg = "密码错误";
60         } catch (LockedAccountException lae) {
61             emsg = "账号已锁定";
62         } catch (ExcessiveAttemptsException eae) {
63             emsg = "重试次数超限";
64         } catch (AuthenticationException ae) {
65             emsg = "其他错误:" + ae.getMessage();
66         }
67         System.out.println(emsg);
68         if(emsg == null) {
69             request.getRequestDispatcher("index.jsp").forward(request, response);
70         } else {
71             response.sendRedirect(request.getContextPath() + "/login.jsp");
72         }
73     }
74
75 }

  index.jsp页面



1 <html>
2 <body>
3 <h2>Hello World!</h2>
4 </body>
5 </html>
  同过一个简单的helloWord案例来进入shiro

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-349041-1-1.html 上篇帖子: 出现异常:Unsupported major.minor version 下篇帖子: Jmeter中Websocket协议支持包的使用 (转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表