首页>代码>shiro入门应用示例(采用spring+springmvc+mybatis+shiro)>/shirodemo/src/cn/ssms/controller/UserControler.java
package cn.ssms.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.ssms.model.User;
import cn.ssms.realm.ShiroDbRealm;
import cn.ssms.service.UserService;
import cn.ssms.util.CipherUtil;
import cn.ssms.util.EncryptUtils;

@Controller
public class UserControler {
	private static Logger logger = LoggerFactory.getLogger(ShiroDbRealm.class);
	@Autowired
	private UserService userService;
	
	/**
	 * 测试springmvc与mybatis整合成功
	 * @param id
	 * @param request
	 * @return
	 */
	@RequestMapping("/{id}/showUser")
	public String showUser(@PathVariable int id, HttpServletRequest request) {
		User user = userService.getUserById(id);
		System.out.println(user.getName());
		request.setAttribute("user", user);
		return "showUser";
	}
	
	/**
	 * 跳转至登录页
	 * @param request
	 * @return
	 */
	@RequestMapping("/tologin")
	public String tologin(HttpServletRequest request, HttpServletResponse response, Model model){
		logger.debug("来自IP[" + request.getRemoteHost() + "]的访问");
		return "login";
	}
	
	/**
	 * 登录示例
	 * @param request
	 * @return
	 */
	@RequestMapping("/login")
	public String login(HttpServletRequest request) {
		String result = "login";
		// 此处默认有值
		String username = request.getParameter("username");
		//MD5加密
		String password = CipherUtil.generatePassword(request.getParameter("password"));
		//String password = request.getParameter("password");
		UsernamePasswordToken token = new UsernamePasswordToken(username, password);
		
		Subject currentUser = SecurityUtils.getSubject();
		try {
			System.out.println("----------------------------");
			if (!currentUser.isAuthenticated()){
				token.setRememberMe(true);
				currentUser.login(token);
			}
			System.out.println("result: " + result);
			result = "index";
		} catch (Exception e) {
			logger.error(e.getMessage());
			result = "login";
		}
		return result;
	}
  
    /**
     * 登出
     * @return
     */
    @RequestMapping(value = "/logout")  
    @ResponseBody  
    public String logout() {  
  
        Subject currentUser = SecurityUtils.getSubject();  
        String result = "logout";  
        currentUser.logout();  
        return result;  
    }  
    
    /**
     * 检查
     * @return
     */
    @RequestMapping(value = "/chklogin", method = RequestMethod.POST)  
    @ResponseBody  
    public String chkLogin() {  
        Subject currentUser = SecurityUtils.getSubject();  
        if (!currentUser.isAuthenticated()) {  
            return "false";  
        }  
        return "true";  
    }  
}
最近下载更多
13043860zj  LV16 2021年5月28日
1666568158  LV2 2021年3月21日
zhujunnan  LV12 2020年9月3日
king_zdm  LV1 2020年6月17日
1798672867  LV21 2020年5月19日
17704627276  LV17 2020年5月3日
C544350851  LV26 2020年3月27日
saaulll  LV4 2020年3月17日
shijiangchen  LV2 2020年3月16日
代码外星人  LV2 2020年1月13日
最近浏览更多
fire1234  LV2 3月5日
xuweiwowzy  LV5 1月14日
森sdfgf  LV8 2023年6月28日
Wu_大花  LV1 2023年3月26日
hesu2020  LV1 2023年3月20日
a1017514773  LV6 2023年3月14日
wz520135  LV7 2022年12月22日
好的好的  LV8 2022年11月18日
forswear1234 2022年9月4日
暂无贡献等级
show123  LV2 2022年6月17日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友