淘淘商城08_許可權管理及登入01
阿新 • • 發佈:2018-12-14
這裡涉及5張表:使用者表,使用者角色表,角色表,許可權表,角色許可權表
登入功能:
package com.taotao.pojo; import java.io.Serializable; public class ActiveUser implements Serializable { private String userid;// 使用者id 主鍵 private String usercode;// 使用者編碼 private String username;// 使用者名稱稱 public String getUserid() { return userid; } public void setUserid(String userid) { this.userid = userid; } public String getUsercode() { return usercode; } public void setUsercode(String usercode) { this.usercode = usercode; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
使用逆向工程生成pojo類
業務邏輯:
使用者名稱不存在
使用者名稱或者密碼錯誤.
成功以後,儲存activeUser儲存到session中.
使用者不存在,使用者名稱或者密碼錯誤.在Controller裡如何獲取到這些提示資訊呢?
先判斷使用者名稱,判斷該使用者不存給一個提示, 密碼錯誤給一個提示.
要在service裡就判斷. 定義方法的返回型別應該是什麼型別.
返回taotaoresult型別
ServiceImpl:
package com.taotao.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils; import com.taotao.mapper.SysUserMapper; import com.taotao.pojo.ActiveUser; import com.taotao.pojo.SysUser; import com.taotao.utils.TaotaoResult; @Service public class SysPermissionServiceImpl implements SysPermissionService { @Autowired private SysUserMapper sysUserMapper; @Override public TaotaoResult authenticat(String usercode, String password) { //1.獲取該物件 SysUser sysUser = this.getSysUser(usercode); //2.判斷該使用者 是否存在 if (sysUser == null) { return TaotaoResult.build(400, "該使用者不存在!"); } //判斷使用者的密碼 //從資料庫中取出該使用者的密碼,該密碼是經過Md5加密的 String pwd_db = sysUser.getPassword(); //獲取到該使用者輸入的密碼,將輸入的密碼經過MD5加密 String pwd_input = DigestUtils.md5DigestAsHex(password.getBytes()); //與資料庫中取出的密碼相比較 if (! pwd_db.equalsIgnoreCase(pwd_input)) { return TaotaoResult.build(400, "使用者名稱或密碼錯誤!"); } //將資料新增到activeUser類中 ActiveUser activeUser = new ActiveUser(); activeUser.setUsercode(usercode); activeUser.setUsername(sysUser.getUsername()); activeUser.setUserid(sysUser.getId()); return TaotaoResult.ok(activeUser); } public SysUser getSysUser(String usercode){ SysUser sysUser = new SysUser(); sysUser.getUsercode(); List<SysUser> list = sysUserMapper.getSysUserByCode(usercode); if (list !=null && list.size() >0) { return list.get(0); } return null; } }
新增dubbo的配置檔案 applicationContext-service.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <!-- 配置service掃描包 --> <context:component-scan base-package="com.taotao.service"/> <!-- 生產者,在這釋出一個dubbo服務,相當於把service釋出到註冊中心去. --> <!-- 使用dubbo釋出服務 --> <!-- 提供方應用資訊,用於計算依賴關係 --> <dubbo:application name="taotao-manager" /> <dubbo:registry protocol="zookeeper" address="172.18.34.94:2181" /> <!-- 用dubbo協議在20880埠暴露服務 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 宣告需要暴露的服務介面 --> <!-- itemServiceImpl --> <dubbo:service interface="com.taotao.service.ItemService" ref="itemServiceImpl" /> <!-- 使用者認證介面 --><!-- itemServiceImpl --> <dubbo:service interface="com.taotao.service.SysPermissionService" ref="sysPermissionServiceImpl" /> </beans>
Controller:
package com.taotao.controller;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.taotao.pojo.ActiveUser;
import com.taotao.service.SysPermissionService;
import com.taotao.utils.TaotaoResult;
@Controller
@RequestMapping("/user")//這裡看前端頁面是怎麼定義的
public class SysPermissionController {
@Autowired
private SysPermissionService sysPermissionService;
/**
* 登入校驗
* @param session
* @param usercode,password,randomcode都是從前臺頁面上取出
* @param password
* @param model
* @return
*/
@RequestMapping("/login")
public String loginUser(HttpSession session, String usercode, String password, String randomcode, Model model){
//先校驗驗證碼,從session中取出
String valicode = (String)session.getAttribute("validatecode");
if (! randomcode.equalsIgnoreCase(valicode)) {
model.addAttribute("message", "驗證碼錯誤,請重新輸入!");
return "error";
}
TaotaoResult result = sysPermissionService.authenticat(usercode, password);
if (result.getStatus()==400) {//返回錯誤 頁面,提示使用者資訊
model.addAttribute("message", result.getMsg());
return "error";
}
ActiveUser activeUser = (ActiveUser) result.getData();
//新增到session中
session.setAttribute("activeUser", activeUser);
return "redirect:../index";
}
}
新增dubbo的配置檔案:springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<!-- 配置註解驅動 -->
<mvc:annotation-driven />
<!-- 檢視解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 配置包掃描器,掃描@Controller註解的類 -->
<context:component-scan base-package="com.taotao.controller"/>
<!-- 引用dubbo服務 -->
<dubbo:application name="taotao-manager-web"/>
<dubbo:registry protocol="zookeeper" address="172.18.34.94:2181"/>
<dubbo:reference interface="com.taotao.service.ItemService" id="itemService" timeout = "300000" />
<!-- 等待5分鐘 -->
<dubbo:reference interface="com.taotao.service.SysPermissionService" id="sysPermissionService"" timeout = "300000" />
</beans>
Service
package com.taotao.service;
import com.taotao.pojo.SysUser;
import com.taotao.utils.TaotaoResult;
/**
* 使用者認證介面
* @author fengjinzhu
*
*/
public interface SysPermissionService {
//使用者認證
public TaotaoResult authenticat(String usercode, String password);
//查詢使用者
public SysUser getSysUser(String usercode);
}
mapper
package com.taotao.mapper;
import java.util.List;
import com.taotao.pojo.SysUser;
public interface SysUserMapper {
//根據usercode查詢
List<SysUser> getSysUserByCode(String usercode);
}