spring shiro 登录 登出

1. 登录页面login.jsp

登录页面
<form action="/user/login" method="post">
    姓名:<input name="userName">
    密码:<input name="password">
    <button type="submit">提交</button>
</form>

2. 登录接口 /user/login

登录时可能会有两个异常,定义全局异常处理器

@PostMapping("/user/login")
@ResponseBody
public List<User> login(String userName, String password) {
    UsernamePasswordToken token = new UsernamePasswordToken(userName, password);
    Subject subject = SecurityUtils.getSubject();
    subject.login(token);
    System.out.println(subject.isPermitted("add"));
    return userServiceI.queryAllUser();
}

3. 登出接口 /user/loginout

@GetMapping("/user/logout")
@ResponseBody
public String logout () {
    Subject subject = SecurityUtils.getSubject();
    String username = subject.getPrincipal().toString();
    subject.logout();
    return "ByeBye " + username;
}

3. 登出接口 /user/loginout

@GetMapping("/user/logout")
@ResponseBody
public String logout () {
    Subject subject = SecurityUtils.getSubject();
    String username = subject.getPrincipal().toString();
    subject.logout();
    return "ByeBye " + username;
}

4. 全局异常处理器

UnknownAccountException

IncorrectCredentialsException

@ControllerAdvice
public class MyExceptionHandler {

    @ExceptionHandler(UnknownAccountException.class)
    public String catchException1(Exception e, HttpServletRequest req, HttpServletResponse resp) {
        System.out.println("账号不存在");
        return "login";
    }

    @ExceptionHandler(IncorrectCredentialsException.class)
    public String catchException2(Exception e, HttpServletRequest req, HttpServletResponse resp) {
        System.out.println("密码错误");
        return "login";
    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    91数据阅读 8,841评论 0 13
  • 1.学习内容 JSP技术入门和常用指令 JSP的内置对象&标签介绍 EL表达式&EL的内置对象 2.JSP技术入门...
    WendyVIV阅读 6,533评论 1 18
  • 4 创建一个社交网站 在上一章中,你学习了如何创建站点地图和订阅,并且为博客应用构建了一个搜索引擎。在这一章中,你...
    lakerszhy阅读 6,533评论 0 7
  • 1.abstract class 和interface 有什么区别? 抽象类可以有构造方法 接口不行 抽象类可以有...
    sunnysans阅读 4,357评论 0 1
  • 一、jsp介绍 jsp作用jsp全称java server pages(java服务器页面),本质是一个servl...
    圣贤与无赖阅读 5,020评论 0 14