一、获取当前的subject,调用securityUtils.getSubject()方法 二、测试当前用户是否已经被认证,调用subject的isAuthenticated() 三、若没有被认证,则把用户名和密码封装成UsernamePasswordToken对象
创建一个表单页面把请求提交到speingMVC的Handler获取用户名和密码执行登录:调用subject的login()方法自定义Realm的方法,从数据库中获取对应的记录,返回给Shiro 自定义Realm需要继承AuthenticatingRealm类,并实现doGetAuthenticationInfo(AuthenticationToken)方法由Shiro完成对密码的比对。代码步骤: 1. 创建form表单在login.jsp中 2. 配置Handler,在handlers包下创建ShiroHandler
@Controller @RequestMapping("/shiro") public class ShiroHandler { @RequestMapping("/login") public String login(@RequestParam("username")String username, @RequestParam("password")String password) { Subject currentUser=SecurityUtils.getSubject(); if(!currentUser.isAuthenticated()) { UsernamePasswordToken token=new UsernamePasswordToken(username, password); token.setRememberMe(true); try { //执行登录 currentUser.login(token); } catch (AuthenticationException e) { // TODO Auto-generated catch block System.out.println("登录失败:"+e.getMessage()); } } return "redirect:/list.jsp"; } }3.自定义realm 4. 在配置文件中添加 5.运行login.jsp,随意输入用户密码 如下 说明shiro框架起作用了
