{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user=request.getSession().getAttribute(“l(fā)oginUser”);
if(user==null)
{
//未登陸,返回登陸頁面
request.setAttribute(“msg”,“沒有權(quán)限請先登陸”);
request.getRequestDispatcher(“/index.html”).forward(request,response);
return false;
}
else
{
//已登陸,放行請求
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//登陸后,將之前存儲在session里面的登錄憑證銷毀,無論是否存在憑證,都執(zhí)行銷毀操作
request.getSession().removeAttribute(“l(fā)oginUser”);
}
}
2.如果登錄成功,那么往session中存放一個username作為登錄憑證【javaweb項目開發(fā)案例 java項目開發(fā)案例經(jīng)典】@Controller
public class LoginController
{
@PostMapping(“/user/login”)
public String Login(@RequestParam(“username”)String username,
@RequestParam(“password”)String password
, Map map, HttpSession session)
{
if(username.equals(“大忽悠”)&&“123456”.equals(password))
{
session.setAttribute(“l(fā)oginUser”,username);
//登錄成功
return “redirect:/main.html”;
}
//登錄失敗
map.put(“msg”,“用戶名或密碼錯誤”);
return “index”;
}
}
3.在springmvc擴展類中將自定義的攔截器進行注冊//使用WebMvcConfigurerAdapter可以來擴展SpringMvc的功能
@Configuration
public class myConfig extends WebMvcConfigurerAdapter
{
//所有的WebMvcConfigurerAdapter組件都會一起起作用
@Bean//將容器注冊在容器中
public WebMvcConfigurerAdapter addViewControllers()
{
WebMvcConfigurerAdapter adapter=new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController(“/”).setViewName(“index”);
registry.addViewController(“/index.html”).setViewName(“index”);
registry.addViewController(“/main.html”).setViewName(“success”);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHanlderIntercept()).addPathPatterns(“/**”)//攔截任意多層路徑下的所有請求
.excludePathPatterns(“/index.html”,”/”,”/user/login”);//某些請求不進行攔截
}
};
return adapter;
}
@Bean
//在SpringMVC擴展類中,將剛才寫的區(qū)域信息解析器放到容器中
public LocaleResolver localeResolver()
{
return new MyLocaleResolver();
}
}
小細節(jié):如果已經(jīng)登錄成功了,那么session域中就會存在已經(jīng)登錄的憑證,如果此時回退到登錄頁面,那么就可以不登錄直接訪問對應(yīng)網(wǎng)頁,這個的解決方法如下:使用下面這個解決方法的前提是攔截器只攔截登錄頁面,而不是所有請求,不然當?shù)卿洺晒?,點擊當前頁面的任何請求,都會回到登錄頁面@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//登陸后,將之前存儲在session里面的登錄憑證銷毀,無論是否存在憑證,都執(zhí)行銷毀操作
request.getSession().removeAttribute(“l(fā)oginUser”);
}
攔截器如果攔截所有請求,靜態(tài)資源也會被攔截,因此注意排除掉對應(yīng)的靜態(tài)資源訪問路徑CRUD—員工列表
推薦閱讀
- 最有吸引力的營銷模式 電商產(chǎn)品定位經(jīng)典案例
- java項目開發(fā)實例 java開源框架有哪些
- seo成功的案例和分析 seo搜索引擎優(yōu)化方案案例
- hadoop數(shù)據(jù)分析案例 hadoop大數(shù)據(jù)開發(fā)基礎(chǔ)答案
- 《星際爭霸2》小愛解說:后發(fā)而制人!防守反擊完美案例。
- 廣州特色創(chuàng)業(yè)實訓項目開發(fā)服務(wù)補助怎么申請?
- 昨日狄某板塊提到的案例回顧中呂布是否有消極比賽的情況呢 王者榮耀8月19日每日一題答案
- 闖紅燈申訴成功案例 闖紅燈申訴成功率大不大
- 濟南醫(yī)保騙保行為舉例
- 平安佛醫(yī)保報銷案例
