Apache shiro 笔记整理之web整合一
2021-07-05 03:06
YPE html>
下面内容是在看了涛哥的《跟我一起学shiro》 和 视频《一头扎入进shiro》 后整理出来备忘和方便自己和其它人学习。
个人主页:http://www.itit123.cn/ 很多其它干货等你来拿
第一步:创建maven版web项目:http://blog.csdn.net/qq_19558705/article/details/49887717
创建好后须要: 右击项目 ----> build path ----> config build path ----> add library ----> server runtime ----> 选择合适的就可以 避免出现 “The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path” 错误
第二步:导入相关的jar
log4j log4j1.2.17 commons-logging commons-logging1.2 org.apache.shiro shiro-core1.2.4 org.apache.shiro shiro-web1.2.4 org.slf4j slf4j-api1.7.12
第三步:配置web.xml文件(该配置方法是载入shiro.ini方法,实际开发中不是这样,能够看官网文档)
org.apache.shiro.web.env.EnvironmentLoaderListener ShiroFilter org.apache.shiro.web.servlet.ShiroFilter ShiroFilter /*
第四步:身份验证
shiro.ini文件:
[main] #用户登入路径 authc.loginUrl=/login [users] ITDragon=123456,admin [urls] #该路径为匿名登入 /login=anon #身份验证后才干登入 /admin=authc
login.jsp:
登录页面
LoginServlet:
package com.shiro.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("login doGet ... "); request.getRequestDispatcher("login.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("login doPost ... "); String userName = request.getParameter("userName"); String password = request.getParameter("password"); Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(userName,password); try { subject.login(token); response.sendRedirect("success.jsp"); } catch (Exception e) { e.printStackTrace(); request.setAttribute("errorInfo", "username或者密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); } } }
通过浏览器訪问发现:未登入的訪问/admin会跳转到登入页面,若登入后在訪问就可以进入成功页面,说明身份验证成功。
第五步:权限认证
shiro文件:
[main] #用户登入路径 authc.loginUrl=/login #角色验证 roles.unauthorizedUrl=/unauthorized.jsp #权限验证 perms.unauthorizedUrl=/unauthorized.jsp [users] ITDragon=123456,admin teacher1=123456,teacher student1=123456 [roles] admin=user:* teacher=student:* [urls] #该路径为匿名登入 /login=anon #身份验证后才干登入 /admin=authc #该路径验证是否拥有teacher角色 /student=roles[teacher] #该路径验证该角色是否拥有权限 /teacher=perms["admin:delete"]
unauthorized.jsp:
错误页面 对不起。您不具备该权限。
在浏览器中訪问/student。会先跳到登入页面进行身份验证。然后在推断该用户是否拥护teacher角色权限
在浏览器中訪问/teacher,推断用户是否拥有该权限。
由于没有准备相应的servlet,所以正确情况会显示404,若没有权限则会跳到 unauthorized.jsp 页面。
这样就完毕了web中shiro的HelloWorld,之后会具体记录笔记。
源代码下载路径:http://download.csdn.net/detail/qq_19558705/9449892
上一篇:php5.6编译安装apache