日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java web 的粗粒度权限管理

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java web 的粗粒度权限管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1.說明

還有一個login.jsp

?

分析,通過userfilter.java 來過濾user,admin。

通過adminfilter.java來過濾admin。

?

?

?

代碼如下:

WebContext目錄下:

admin目錄:下的admin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body><h1>管理員界面</h1><a href="<c:url value='/index.jsp'/>" >游客入口</a> <br /><a href="<c:url value='/user/user.jsp' />">會員入口</a> <br /><a href="<c:url value='/admin/admin.jsp' />">管理入口</a> <br /> </body> </html>

user目錄下的user.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body><h1>會員界面</h1><a href="<c:url value='/index.jsp'/>" >游客入口</a> <br /><a href="<c:url value='/user/user.jsp' />">會員入口</a> <br /><a href="<c:url value='/admin/admin.jsp' />">管理入口</a> <br /> </body> </html>

?

WebContext目錄下的index.jsp 和 login.jsp

//index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body><h1>游客界面</h1><a href="<c:url value='/index.jsp'/>" >游客入口</a> <br /><a href="<c:url value='/user/user.jsp' />">會員入口</a> <br /><a href="<c:url value='/admin/admin.jsp' />">管理入口</a> <br /> </body> </html>//login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>登錄頁面</h1><form action="<c:url value='/LoginServlet'/>" method="post"><input type="text" name="username"/><input type="submit" value="登錄" /> </form></body> </html>

?

2.一個LoginServlet處理 jsp的登錄動作。

package com.aslan.web.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;/*** Servlet implementation class LoginServlet*/ @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public LoginServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.獲取用戶名String username = request.getParameter("username");//2.判斷用戶名是否包含aslan//3.如果包含,就是管理員,如果不包含就是普通會員//4.登錄信息保存到session//5.轉發到index.jspif (username.contains("aslan")) {request.getSession().setAttribute("admin", username);}else {request.getSession().setAttribute("username",username); }System.out.println(username);request.getRequestDispatcher("/index.jsp").forward(request, response);}}

?

3.使用2個Filter來控制User 和admin的訪問權限

UserFilter.java

package com.aslan.filter;import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest;/*** Servlet Filter implementation class UserFilter*/ @WebFilter("/user/*") public class UserFilter implements Filter {private FilterConfig config;public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {//1.得到sessionHttpServletRequest req = (HttpServletRequest) request;String name = (String) req.getSession().getAttribute("admin");System.out.println("admin:"+name);//2.判斷session域中是否存在admin,如果存在,放行if (name != null) {//放行chain.doFilter(request, response);return ; }//3.判斷session域中是否存在username,如果存在,放行name = (String) req.getSession().getAttribute("username");System.out.println("username:"+name);if (name != null) {//放行chain.doFilter(request, response);}else {req.setAttribute("msg", "您啥都不是,不要瞎溜達");req.getRequestDispatcher("/login.jsp").forward(request, response);}}public void init(FilterConfig fConfig) throws ServletException {this.config = fConfig;}}

AdminFilter.java

package com.aslan.filter;import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest;/*** Servlet Filter implementation class AdminFilter*/ @WebFilter("/admin/*") public class AdminFilter implements Filter {/*** Default constructor. */public AdminFilter() {// TODO Auto-generated constructor stub}/*** @see Filter#destroy()*/public void destroy() {// TODO Auto-generated method stub}/*** @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)*/public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest) request;String name = (String) req.getSession().getAttribute("admin");if (name == null) {req.setAttribute("msg", "不要瞎溜達");request.getRequestDispatcher("/login.jsp").forward(request, response);return;}if (name.contains("aslan")) {//放行chain.doFilter(request, response);}else {req.setAttribute("msg", "不要瞎溜達");request.getRequestDispatcher("/login.jsp").forward(request, response);}}/*** @see Filter#init(FilterConfig)*/public void init(FilterConfig fConfig) throws ServletException {// TODO Auto-generated method stub}}

?

?

轉載于:https://my.oschina.net/aslanjia/blog/847255

總結

以上是生活随笔為你收集整理的java web 的粗粒度权限管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。