1. 程式人生 > 其它 >後臺登入功能實現

後臺登入功能實現

思路:

1.後端拿到使用者登入資訊

2.去資料庫查詢登入使用者名稱(可用Ajax技術在前端判斷使用者名稱是否存在)

3.使用者名稱存在則對前端傳過來的密碼進行加密,將加密結果與資料庫的密碼比對

4.加攔截器

前端:// 進行登入操作
form.on('submit(login)', function (data) {
console.log(data);
//傳送登入請求
$.post("/admin/employee/login",data.field,function(result){
if(result.success){
location.href="/admin/home.html";
}else{
layer.msg(result.message);
}
},"json");
return false;
});

後端:

控制器:@RequestMapping("/login")
public String login(String username, String password, HttpSession session){
Map<String,Object> map = new HashMap<String,Object>();
//呼叫員工登入的方法
Employee employee = employeeService.login(username, password);
//判斷物件是否為空,不為空表示登入成功
if(employee!=null){
//儲存當前登入使用者
session.setAttribute(SystemConstant.LOGINUSER,employee);
map.put(SystemConstant.SUCCESS,true);//成功
}else{
map.put(SystemConstant.SUCCESS,false);//失敗
map.put(SystemConstant.MESSAGE,"賬號密碼錯誤,登入失敗");
}
return JSON.toJSONString(map);
}

dao層:/**
* 根據登入賬號查詢員工資訊
* @param loginName
* @return
*/
Employee findEmployeeByLoginName(String loginName);

mapper:

<mapper namespace="com.pz.dao.EmployeeMapper">

<!-- 根據登入賬號查詢員工資訊 -->
<select id="findEmployeeByLoginName" resultType="com.pz.entity.Employee">
select * from employee where loginName = #{loginName}
</select>

service:

@Service
@Transactional
public class EmployeeServiceImpl implements EmployeeService {

@Resource
private EmployeeMapper employeeMapper;

/**
* 員工登入
*
* @param loginName
* @param loginPwd
* @return
*/
public Employee login(String loginName, String loginPwd) {
//呼叫根據賬號查詢員工資訊的方法
Employee employee = employeeMapper.findEmployeeByLoginName(loginName);
//判斷物件是否為空
if (employee != null) {
//將密碼加密處理
String newPassword = PasswordUtil.md5(loginPwd, employee.getSalt(), SystemConstant.PASSWORD_COUNT);
//比較密碼是否一致
if (employee.getLoginPwd().equals(newPassword)) {
return employee;//登入成功
}
}
//登入失敗
return null;
}
}

攔截器:

public class LoginInterceptor extends HandlerInterceptorAdapter {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//判斷session是否為空
if(request.getSession().getAttribute(SystemConstant.LOGINUSER)==null){
//如果沒有登入,則去到登入頁面
response.sendRedirect(request.getContextPath()+"/admin/login.html");
return false;//驗證失敗,進行攔截
}
//驗證通過
return true;
}
}

配置攔截器:

<mvc:interceptors>
<mvc:interceptor>
<!-- 攔截所有以/admin/開頭的訪問路徑 -->
<mvc:mapping path="/admin/**"/>
<!-- 排除員工登入的訪問路徑 -->
<mvc:exclude-mapping path="/admin/employee/login"/>
<mvc:exclude-mapping path="/admin/login.html"/>
<!-- 注入攔截器 -->
<bean class="com.pz.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>