欢迎访问 生活随笔!

生活随笔

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

编程问答

ssm实现用户登录功能拦截

发布时间:2024/1/8 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ssm实现用户登录功能拦截 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

拦截情况分为登,录页面不用拦截用户未登录要拦截,登录后根据用户的权限进行操作拦截;如果用户未登录就访问某些页面就拦截该页面请求跳到登录页面,如果用户登录后想执行增加操作,但该用户的权限中没有增加的权限,所以显示友好提示。

主要实现用拦截器:

/*** 实现用户登录,操作权限的拦截* @author ASUS**/ public class LoginInterceptor implements HandlerInterceptor {private List<String> passList=new ArrayList<>();@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {//允许放行的url路径String url=request.getRequestURI();System.out.println("url-->"+url);for(String passUrl:passList) {System.out.println("passUrl-->"+passUrl);if(url.indexOf(passUrl)>0) {return true;}}//权限放行,获取用户已经登录时,放在session的权限SysWorker worker= (SysWorker) request.getSession().getAttribute("user");for(SysRight right:worker.getSysJobs().getListRight()) {if(url.indexOf(right.getRightURL())>0) {return true;}else {request.getRequestDispatcher("/WEB-INF/pages/noPower.jsp").forward(request, response);return false;}}//已经登录放行SysWorker user=(SysWorker)request.getSession().getAttribute("user");if(user!=null) {return true;}request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request, response);return false;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// TODO Auto-generated method stub}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {// TODO Auto-generated method stub}public List getPassList() {return passList;}public void setPassList(List passList) {this.passList = passList;}}

在springmvc.xml的配置文件中增加该拦截器:

<!--拦截器 --><mvc:interceptors><mvc:interceptor><mvc:mapping path="/pk/*/*" /><bean class="com.st.eleventh.interceptor.LoginInterceptor"><property name="passList"><list><value>/login</value></list></property></bean></mvc:interceptor></mvc:interceptors>

分析:<mvc:mapping path="/pk/*/*" />表示要拦截的路径请求。

<property name="passList"><list>  <value>/login</value> </list></property>存放的是不用拦截的路径请求,list的值在LoginInterceptor中有一个属性:List<String> passList=new ArrayList<>();来接收。

效果:

我的座右铭:不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行。

 

总结

以上是生活随笔为你收集整理的ssm实现用户登录功能拦截的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。