zoukankan      html  css  js  c++  java
  • Shiro+spring01

    mapper层

    package com.java1234.dao;
     
    import java.util.Set;
     
    import com.java1234.entity.User;
     
    public interface UserDao {
     
    /**
    * 通过用户名查询用户
    * @param userName
    * @return
    */
    public User getByUserName(String userName);
     
    /**
    * 通过用户名查询角色信息
    * @param userName
    * @return
    */
    public Set<String> getRoles(String userName);
     
    /**
    * 通过用户名查询权限信息
    * @param userName
    * @return
    */
    public Set<String> getPermissions(String userName);
    }-----------------------------------------------------------------------------------------------------------
     UserMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    <mapper namespace="com.java1234.dao.UserDao">
     
    <resultMap type="User" id="UserResult">
    <result property="id" column="id"/>
    <result property="userName" column="userName"/>
    <result property="password" column="password"/>
    </resultMap>
     
    <select id="getByUserName" parameterType="String" resultMap="UserResult">
    select * from t_user where userName=#{userName}
    </select>
     
    <select id="getRoles" parameterType="String" resultType="String">
    select r.roleName from t_user u,t_role r where u.roleId=r.id and u.userName=#{userName}
    </select>
     
    <select id="getPermissions" parameterType="String" resultType="String">
    select p.permissionName from t_user u,t_role r,t_permission p where u.roleId=r.id and p.roleId=r.id and u.userName=#{userName}
    </select>
     
    </mapper> 

    --------------------------------------------------------------------------------------------------------------------------------------------------
    package com.java1234.service;
     
    import java.util.Set;
     
    import com.java1234.entity.User;
     
    public interface UserService {
     
    /**
    * 通过用户名查询用户
    * @param userName
    * @return
    */
    public User getByUserName(String userName);
     
    /**
    * 通过用户名查询角色信息
    * @param userName
    * @return
    */
    public Set<String> getRoles(String userName);
     
    /**
    * 通过用户名查询权限信息
    * @param userName
    * @return
    */
    public Set<String> getPermissions(String userName);
    }
    ------------------------------------------------------------------------------------------------------------------------
    UserServiceImpl------
     
    @Service("userService")
    public class UserServiceImpl implements UserService{
     
    @Resource
    private UserDao userDao;
     
    public User getByUserName(String userName) {
    return userDao.getByUserName(userName);
    }
     
    public Set<String> getRoles(String userName) {
    return userDao.getRoles(userName);
    }
     
    public Set<String> getPermissions(String userName) {
    return userDao.getPermissions(userName);
    }
     
    }------------------------------------------------------------------------------------------------------------------
    /**
     * 用户Controller层
     * @author Administrator
     *
     */
    @Controller
    @RequestMapping("/user")
    public class UserController {
     
    /**
    * 用户登录
    * @param user
    * @param request
    * @return
    */
    @RequestMapping("/login")
    public String login(User user,HttpServletRequest request){
    Subject subject=SecurityUtils.getSubject();
    UsernamePasswordToken token=new UsernamePasswordToken(user.getUserName(), user.getPassword());
    try{
    //验证是否登录
    subject.login(token);
    Session session=subject.getSession();
    System.out.println("sessionId:"+session.getId());
    System.out.println("sessionHost:"+session.getHost());
    System.out.println("sessionTimeout:"+session.getTimeout());
    session.setAttribute("info", "session的数据");
    return "redirect:/success.jsp";
    }catch(Exception e){
    e.printStackTrace();
    request.setAttribute("user", user);
    request.setAttribute("errorMsg", "用户名或密码错误!");
    return "index";
    }
    }
     
     
    }
    ----------------------------------------------------------------------------------------------------------------------------------------------
     
    MyRealm
     
    public class MyRealm extends AuthorizingRealm{
     
    @Resource
    private UserService userService;
     
    /**
     * 为当限前登录的用户授予角色和权
     */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
    String userName=(String)principals.getPrimaryPrincipal();
    SimpleAuthorizationInfo authorizationInfo=new SimpleAuthorizationInfo();
    authorizationInfo.setRoles(userService.getRoles(userName));
    authorizationInfo.setStringPermissions(userService.getPermissions(userName));
    return authorizationInfo;
    }
     
    /**
     * 验证当前登录的用户
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
    String userName=(String)token.getPrincipal();
    User user=userService.getByUserName(userName);
    if(user!=null){
    AuthenticationInfo authcInfo=new SimpleAuthenticationInfo(user.getUserName(),user.getPassword(),"xx");
    return authcInfo;
    }else{
    return null;
    }
    }
     
    }
  • 相关阅读:
    软件设计中的分层模式, 三层开发遵循的原则,分层开发的特点和优势
    什么是jsp?
    在Servlet中如何如何获取请求的参数?
    Servlet的加载(执行过程,原理)和生命周期
    servlet的注册
    什么是servlet容器
    什么是Servlet
    如何访问动态页面——URL
    什么是C/S? Client/server的简写,这里Server指的是DBServer。
    MVC(Model-View-Controller)软件设计模式
  • 原文地址:https://www.cnblogs.com/MAPO/p/8493811.html
Copyright © 2011-2022 走看看