我对spring mvc很新,我必须开发一个基于会话跟踪的Web应用程序,我的应用程序是基于注释的。在我的网络应用程序中,我根据会话中的用户名和角色存在路由每个页面。最初我一直使用HttpSession作为控制器方法的参数,但是很难检查每个请求。我知道春天有很多应用程序级别的安全方法,但我真的无法理解如何使用它们。请建议我一些解决方案,提前帮助谢谢。
用拦截器更新后:
Controller class
// Method to showLogin page to user
@RequestMapping(value = "user")
public ModelAndView showLoginToUser(@ModelAttribute("VMFE") VmFeUser VMFE,HttpSession session) {
System.out.println("@C====>showLoginToUser()===> ");
ModelAndView view = new ModelAndView();
//session.setAttribute("user_name", "no_user");
try {
view.setViewName("login");
} catch (Exception e) {
e.printStackTrace();
}
return view;
}
Interceptor
public class HelloWorldInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle (HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
RequestMapping rm = ((HandlerMethod) handler).getMethodAnnotation(
RequestMapping.class);
boolean alreadyLoggedIn = request.getSession()
.getAttribute("user_name") != null;
boolean loginPageRequested = rm != null && rm.value().length > 0
&& "login".equals(rm.value()[0]);
if (alreadyLoggedIn && loginPageRequested) {
//response.sendRedirect(request.getContextPath() + "/app/main-age");
return false;
} else if (!alreadyLoggedIn && !loginPageRequested) {
System.out.println("REDIRECTING===");
response.sendRedirect(request.getContextPath() + "/user");
return false;
}
return true;
}
}
使用spring security,您可以实现会话跟踪并应用过滤器来验证请求。 Spring安全性非常容易实现。请遵循春季安全教程click here。你也可以检查我的git repo以实现click here。这是一个角度弹簧启动应用程序,我使用Spring安全和JWT进行身份验证和授权。
希望它能帮到你,谢谢。