LoginController.java
@Controller
public class LoginController {
@RequestMapping("gologin.html")
public String goLogin() {
return "login";
}
@RequestMapping("logout.html")
public String logout() {
Subject subject = SecurityUtils.getSubject();
subject.logout();
return "login";
}
@RequestMapping("login.html")
public String login(String username, String password, HttpServletRequest request) {
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
try {
subject.login(token);
return "redirect:index.html";
} catch (AuthenticationException e) {
e.printStackTrace();
request.setAttribute("error", "用户名或密码错误");
return "login";
}
}
}
MenuController.java
@Controller
@RequestMapping("/menu")
public class MenuController {
@RequestMapping("list.html")
public String list() {
return "/menu_list";
}
@RequestMapping("go_edit.html")
@RequiresPermissions("menu:edit")
public String goEdit() {
return "/menu_edit";
}
}
PageController.java
@Controller
public class PageController {
@RequestMapping("index.html")
public String index() {
return "index";
}
@RequestMapping("error.html")
public String error() {
return "error";
}
}
AuthExceptionHandler.java
@ControllerAdvice
public class AuthExceptionHandler {
@ExceptionHandler({UnauthorizedException.class})
@ResponseStatus(HttpStatus.UNAUTHORIZED)
public ModelAndView processUnauthenticatedException(NativeWebRequest request, UnauthorizedException e) {
return new ModelAndView("error", "exception", e);
}
}
index.jsp
<div data-options="region:'west'" title="菜单" style="width: 10%">
<ul class="easyui-tree" id="leftMenu">
<li>
<span>系统管理</span>
<ul>
<shiro:hasPermission name="menu:list">
<li data-options="url:'/menu/list.html'">
<span>菜单管理</span>
</li>
</shiro:hasPermission>
<shiro:hasRole name="admin">
<li>
<span>角色管理</span>
</li>
</shiro:hasRole>
<li>
<span>用户管理</span>
</li>
</ul>
</li>
</ul>
</div>
<div data-options="region:'center'" title="首页">
<div id="tabs" class="easyui-tabs"></div>
</div>
<script type="text/javascript">
$(function () {
$("#leftMenu").tree({
onClick: function (node) {
if ($("#leftMenu").tree("isLeaf", node.target)) {
var tabs = $("#tabs");
var tab = tabs.tabs("getTab", node.text);
if (tab) {
tabs.tabs("select", node.text)
} else {
tabs.tabs("add", {
title: node.text,
href: node.url,
closable: true
})
}
}
}
})
})
</script>