Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
Y
YX_IDENT_REFACTORING
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhangyusheng
YX_IDENT_REFACTORING
Commits
4864387c
Commit
4864387c
authored
Oct 15, 2018
by
liboyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.springboot+shiro+thymeleaf+mybatis实现用户登录认证和管理员添加权限
parent
56c66479
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
350 additions
and
90 deletions
+350
-90
Main.java
src/main/java/com/yxproject/start/Main.java
+8
-8
UserInfoApi.java
src/main/java/com/yxproject/start/api/UserInfoApi.java
+105
-37
JerseyConfig.java
src/main/java/com/yxproject/start/config/JerseyConfig.java
+10
-10
MyShiroRealm.java
src/main/java/com/yxproject/start/config/MyShiroRealm.java
+3
-3
ShiroConfig.java
src/main/java/com/yxproject/start/config/ShiroConfig.java
+2
-1
SysPermission.java
src/main/java/com/yxproject/start/entity/SysPermission.java
+14
-7
SysPermissionMapper.java
.../java/com/yxproject/start/mapper/SysPermissionMapper.java
+20
-0
UserInfoMapper.java
src/main/java/com/yxproject/start/mapper/UserInfoMapper.java
+6
-1
SysPermissionService.java
...ava/com/yxproject/start/service/SysPermissionService.java
+13
-0
UserInfoService.java
...ain/java/com/yxproject/start/service/UserInfoService.java
+4
-1
SysPermissionServiceImpl.java
...xproject/start/service/impl/SysPermissionServiceImpl.java
+10
-9
UserInfoServiceImpl.java
...com/yxproject/start/service/impl/UserInfoServiceImpl.java
+44
-0
application.properties
src/main/resources/application.properties
+0
-4
SysPermissionMapper.xml
src/main/resources/mapper/SysPermissionMapper.xml
+19
-0
SystemUserMapper.xml
src/main/resources/mapper/SystemUserMapper.xml
+22
-1
login.html
src/main/resources/templates/login.html
+53
-7
userInfoAdd.html
src/main/resources/templates/userInfoAdd.html
+12
-1
使用手册.txt
使用手册.txt
+5
-0
No files found.
src/main/java/com/yxproject/start/Main.java
View file @
4864387c
package
com
.
yxproject
.
start
;
import
com.yxproject.start.config.JerseyConfig
;
//
import com.yxproject.start.config.JerseyConfig;
import
org.glassfish.jersey.servlet.ServletContainer
;
import
org.glassfish.jersey.servlet.ServletProperties
;
import
org.springframework.boot.SpringApplication
;
...
...
@@ -17,13 +17,13 @@ import org.springframework.context.annotation.Bean;
public
class
Main
{
@Bean
public
ServletRegistrationBean
jerseyServlet
()
{
ServletRegistrationBean
registration
=
new
ServletRegistrationBean
(
new
ServletContainer
(),
"/rest/*"
);
registration
.
addInitParameter
(
ServletProperties
.
JAXRS_APPLICATION_CLASS
,
JerseyConfig
.
class
.
getName
());
return
registration
;
}
//
@Bean
//
public ServletRegistrationBean jerseyServlet() {
//
ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(), "/rest/*");
//
registration.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS,
//
JerseyConfig.class.getName());
//
return registration;
//
}
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
Main
.
class
,
args
);
...
...
src/main/java/com/yxproject/start/api/UserInfoApi.java
View file @
4864387c
package
com
.
yxproject
.
start
.
api
;
import
com.yxproject.start.entity.SysPermission
;
import
com.yxproject.start.entity.UserInfo
;
import
com.yxproject.start.service.SystemUserService
;
import
com.yxproject.start.service.SysPermissionService
;
import
com.yxproject.start.service.UserInfoService
;
import
com.yxproject.start.service.impl.UserInfoServiceImpl
;
import
org.apache.shiro.SecurityUtils
;
import
org.apache.shiro.authc.IncorrectCredentialsException
;
import
org.apache.shiro.authc.UnknownAccountException
;
import
org.apache.shiro.authc.UsernamePasswordToken
;
import
org.apache.shiro.authz.Permission
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.apache.shiro.session.Session
;
import
org.apache.shiro.subject.Subject
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.ModelAttribute
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
javax.ws.rs.*
;
import
javax.ws.rs.core.MediaType
;
import
java.
awt.*
;
import
java.
util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
@
Path
(
"user"
)
@
Controller
/**
* @author Administrator
*/
public
class
UserInfoApi
{
@Autowired
private
Sys
temUserService
systemUser
Service
;
private
Sys
PermissionService
sysPermission
Service
;
// @RequestMapping("login")
// @Produces(MediaType.APPLICATION_JSON)
// public Map<String, Object> submitLogin(@QueryParam("username") String username, @QueryParam("password") String password) {
// Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
// Subject currentUser = SecurityUtils.getSubject();
//
// // 把用户名和密码封装为 UsernamePasswordToken 对象
// UsernamePasswordToken token = new UsernamePasswordToken(username, password);
// try {
// currentUser.login(token);
// resultMap.put("status", 200);
// resultMap.put("message", "登录成功");
// } catch (UnknownAccountException e) {
// resultMap.put("status", 500);
// resultMap.put("message", "账号不存在!");
// }catch(IncorrectCredentialsException e1){
// resultMap.put("status", 501);
// resultMap.put("message", "密码错误!");
// }catch (Exception e) {
// resultMap.put("status", 500);
// resultMap.put("message", "账号不存在");
// }
//
// return resultMap;
// }
@GET
@Path
(
"userLogin"
)
@Produces
(
MediaType
.
APPLICATION_JSON
)
public
Map
<
String
,
Object
>
submitLogin
(
@QueryParam
(
"username"
)
String
username
,
@QueryParam
(
"password"
)
String
password
)
{
Map
<
String
,
Object
>
resultMap
=
new
LinkedHashMap
<
String
,
Object
>();
Subject
currentUser
=
SecurityUtils
.
getSubject
();
// 把用户名和密码封装为 UsernamePasswordToken 对象
UsernamePasswordToken
token
=
new
UsernamePasswordToken
(
username
,
password
);
try
{
currentUser
.
login
(
token
);
resultMap
.
put
(
"status"
,
200
);
resultMap
.
put
(
"message"
,
"登录成功"
);
}
catch
(
UnknownAccountException
e
)
{
resultMap
.
put
(
"status"
,
500
);
resultMap
.
put
(
"message"
,
"账号不存在!"
);
}
catch
(
IncorrectCredentialsException
e1
){
resultMap
.
put
(
"status"
,
501
);
resultMap
.
put
(
"message"
,
"密码错误!"
);
}
catch
(
Exception
e
)
{
resultMap
.
put
(
"status"
,
500
);
resultMap
.
put
(
"message"
,
"账号不存在"
);
}
@RequestMapping
(
value
=
"/permissionAdd"
,
method
=
RequestMethod
.
POST
)
@RequiresPermissions
(
"userInfo.add"
)
@ResponseBody
public
String
userAdd
(
@ModelAttribute
SysPermission
sysPermission
)
{
return
resultMap
;
// Map<String, Object> resultMap = new HashMap<String, Object>();
// String name = sysPermission.getName();
// String resourceType = sysPermission.getResourceType();
// String url = sysPermission.getUrl();
// String permission =sysPermission.getPermission();
// long parentId = sysPermission.getParentId();
// String parentIds = sysPermission.getParentIds();
// resultMap.put("id",4);
// resultMap.put("name",name);
// resultMap.put("resourceType",resourceType);
// resultMap.put("url",url);
// resultMap.put("permission",permission);
// resultMap.put("parentId",parentId);
// resultMap.put("parentIds",parentIds);
// resultMap.put("available",false);
// System.out.println(resultMap.toString());
System
.
out
.
println
(
"?????"
);
sysPermissionService
.
addPermission
(
sysPermission
);
return
"yes"
;
}
@POST
@Path
(
"userAdd"
)
@Produces
(
MediaType
.
APPLICATION_JSON
)
@Consumes
(
MediaType
.
APPLICATION_JSON
)
@RequiresPermissions
(
"user:add"
)
public
Map
<
String
,
Object
>
userAdd
(
String
json
)
{
Map
<
String
,
Object
>
resultMap
=
new
LinkedHashMap
<
String
,
Object
>();
// /**
// * 用户添加;
// * @return
// */
// @RequestMapping(value = "/userAdd",method = RequestMethod.POST)
// @RequiresPermissions("userInfo.add")//权限管理;
// public String userInfoAdd(@QueryParam("username") String username, @QueryParam("password") String password){
// System.out.println("username------"+username+" -----password-----"+password);
// UserInfoService systemUserService = new UserInfoServiceImpl();
// int i = systemUserService.addUsername(new UserInfo());
//// int i = 0;
// System.out.println(i+"------返回值");
// return i+"userInfoAdd";
// }
//
// /**
// * 用户删除;
// * @return
// */
// @RequestMapping(value = "/userDel",method = RequestMethod.POST)
// @RequiresPermissions("userInfo.del")//权限管理;
// public String userInfoDel(@QueryParam("username") String username, @QueryParam("password") String password){
// System.out.println("username------"+username+" -----password-----"+password);
// UserInfoService systemUserService = new UserInfoServiceImpl();
// int i = systemUserService.delUsername(new UserInfo());
//// int i = 0;
// System.out.println(i+"------返回值");
// return i+"userInfoAdd";
// }
//
// /**
// * 用户更新;
// * @return
// */
// @RequestMapping(value = "/userUpdate",method = RequestMethod.POST)
// @RequiresPermissions("userInfo.update")//权限管理;
// public String userInfoUpdate(@QueryParam("username") String username, @QueryParam("password") String password){
// System.out.println("username------"+username+" -----password-----"+password);
// UserInfoService systemUserService = new UserInfoServiceImpl();
// int i = systemUserService.updateUsername(new UserInfo());
//// int i = 0;
// System.out.println(i+"------返回值");
// return i+"userInfoAdd";
// }
return
resultMap
;
}
}
src/main/java/com/yxproject/start/config/JerseyConfig.java
View file @
4864387c
package
com
.
yxproject
.
start
.
config
;
import
com.yxproject.start.api.UserInfoApi
;
import
org.glassfish.jersey.server.ResourceConfig
;
public
class
JerseyConfig
extends
ResourceConfig
{
public
JerseyConfig
()
{
register
(
UserInfoApi
.
class
);
}
}
//
package com.yxproject.start.config;
//
//
import com.yxproject.start.api.UserInfoApi;
//
import org.glassfish.jersey.server.ResourceConfig;
//
//
public class JerseyConfig extends ResourceConfig {
//
public JerseyConfig() {
//
register(UserInfoApi.class);
//
}
//
}
src/main/java/com/yxproject/start/config/MyShiroRealm.java
View file @
4864387c
...
...
@@ -3,7 +3,7 @@ package com.yxproject.start.config;
import
com.yxproject.start.entity.SysPermission
;
import
com.yxproject.start.entity.SysRole
;
import
com.yxproject.start.entity.UserInfo
;
import
com.yxproject.start.service.
SystemUser
Service
;
import
com.yxproject.start.service.
UserInfo
Service
;
import
org.apache.shiro.authc.AuthenticationException
;
import
org.apache.shiro.authc.AuthenticationInfo
;
import
org.apache.shiro.authc.AuthenticationToken
;
...
...
@@ -21,7 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
public
class
MyShiroRealm
extends
AuthorizingRealm
{
@Autowired
private
SystemUserService
systemUser
Service
;
private
UserInfoService
userInfo
Service
;
@Override
protected
AuthorizationInfo
doGetAuthorizationInfo
(
PrincipalCollection
principals
)
{
System
.
out
.
println
(
principals
.
getPrimaryPrincipal
());
...
...
@@ -53,7 +53,7 @@ public class MyShiroRealm extends AuthorizingRealm {
System
.
out
.
println
(
token
.
getCredentials
().
toString
());
//通过username从数据库中查找 User对象,如果找到,没找到.
//实际项目中,这里可以根据实际情况做缓存,如果不做,Shiro自己也是有时间间隔机制,2分钟内不会重复执行该方法
UserInfo
user
=
systemUser
Service
.
findByUsername
(
username
);
UserInfo
user
=
userInfo
Service
.
findByUsername
(
username
);
if
(
user
==
null
){
return
null
;
}
...
...
src/main/java/com/yxproject/start/config/ShiroConfig.java
View file @
4864387c
...
...
@@ -31,13 +31,14 @@ public class ShiroConfig {
//配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了
filterChainDefinitionMap
.
put
(
"/logout"
,
"logout"
);
//<!-- 过滤链定义,从上向下顺序执行,一般将/**放在最为下边 -->:这是一个坑呢,一不小心代码就不好使了;
filterChainDefinitionMap
.
put
(
"/**"
,
"authc"
);
// 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面
shiroFilterFactoryBean
.
setLoginUrl
(
"/userLogin"
);
// 登录成功后要跳转的链接
shiroFilterFactoryBean
.
setSuccessUrl
(
"/index"
);
//<!-- authc:所有url都必须认证通过才可以访问; anon:所有url都都可以匿名访问-->
filterChainDefinitionMap
.
put
(
"/**"
,
"authc"
);
//未授权界面;
shiroFilterFactoryBean
.
setUnauthorizedUrl
(
"/403"
);
...
...
src/main/java/com/yxproject/start/entity/SysPermission.java
View file @
4864387c
...
...
@@ -8,14 +8,21 @@ import java.util.List;
public
class
SysPermission
implements
Serializable
{
@Id
@GeneratedValue
private
Integer
id
;
//主键.
private
String
name
;
//名称.
//主键.
private
Integer
id
;
//名称.
private
String
name
;
@Column
(
columnDefinition
=
"enum('menu','button')"
)
private
String
resourceType
;
//资源类型,[menu|button]
private
String
url
;
//资源路径.
private
String
permission
;
//权限字符串,menu例子:role:*,button例子:role:create,role:update,role:delete,role:view
private
Long
parentId
;
//父编号
private
String
parentIds
;
//父编号列表
//资源类型,[menu|button]
private
String
resourceType
;
//资源路径.
private
String
url
;
//权限字符串,menu例子:role:*,button例子:role:create,role:update,role:delete,role:view
private
String
permission
;
//父编号
private
Long
parentId
;
//父编号列表
private
String
parentIds
;
private
Boolean
available
=
Boolean
.
FALSE
;
@ManyToMany
@JoinTable
(
name
=
"SysRolePermission"
,
joinColumns
={
@JoinColumn
(
name
=
"permissionId"
)},
inverseJoinColumns
={
@JoinColumn
(
name
=
"roleId"
)})
...
...
src/main/java/com/yxproject/start/mapper/SysPermissionMapper.java
0 → 100644
View file @
4864387c
package
com
.
yxproject
.
start
.
mapper
;
import
com.yxproject.start.entity.SysPermission
;
import
org.apache.ibatis.annotations.Insert
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Options
;
import
org.springframework.stereotype.Repository
;
import
java.util.Map
;
/**
* @author Administrator
*/
@Mapper
@Repository
public
interface
SysPermissionMapper
{
// @Insert("INSERT INTO sys_permission (id,available,name,parent_id,parent_ids,permission,resource_type,url)\n" +
// "VALUES (PERMISSION_seq.nextval,false,'用户删除',1,'0/1','userInfo:del','button','userInfo/userDel')")
public
void
addPermissionByMap
(
SysPermission
sysPermission
);
}
src/main/java/com/yxproject/start/mapper/
SystemUser
Mapper.java
→
src/main/java/com/yxproject/start/mapper/
UserInfo
Mapper.java
View file @
4864387c
...
...
@@ -3,6 +3,7 @@ package com.yxproject.start.mapper;
import
com.yxproject.start.entity.UserInfo
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.springframework.data.repository.CrudRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.Map
;
...
...
@@ -10,8 +11,12 @@ import java.util.Map;
* @author Administrator
*/
@Mapper
public
interface
SystemUserMapper
extends
CrudRepository
<
UserInfo
,
Long
>
{
@Repository
public
interface
UserInfoMapper
extends
CrudRepository
<
UserInfo
,
Long
>
{
public
UserInfo
findUserByUsername
(
String
username
);
// public int addUserInfo(UserInfo userInfo);
// public int delUserInfo(int userInfoID);
// public int updateUserInfo(UserInfo userInfo);
}
src/main/java/com/yxproject/start/service/SysPermissionService.java
0 → 100644
View file @
4864387c
package
com
.
yxproject
.
start
.
service
;
import
com.yxproject.start.entity.SysPermission
;
import
java.util.Map
;
public
interface
SysPermissionService
{
public
void
addPermission
(
SysPermission
sysPermission
);
}
src/main/java/com/yxproject/start/service/
SystemUser
Service.java
→
src/main/java/com/yxproject/start/service/
UserInfo
Service.java
View file @
4864387c
...
...
@@ -4,9 +4,12 @@ import com.yxproject.start.entity.UserInfo;
import
java.util.Map
;
public
interface
SystemUser
Service
{
public
interface
UserInfo
Service
{
// public UserInfo findUserRoleMenu(Map<String,String> map);
public
UserInfo
findByUsername
(
String
username
);
// int addUsername( UserInfo userInfo);
// int delUsername( UserInfo userInfo);
// int updateUsername(UserInfo userInfo);
}
src/main/java/com/yxproject/start/service/impl/Sys
temUser
ServiceImpl.java
→
src/main/java/com/yxproject/start/service/impl/Sys
Permission
ServiceImpl.java
View file @
4864387c
package
com
.
yxproject
.
start
.
service
.
impl
;
import
com.yxproject.start.entity.
UserInfo
;
import
com.yxproject.start.mapper.Sys
temUser
Mapper
;
import
com.yxproject.start.service.Sys
temUser
Service
;
import
com.yxproject.start.entity.
SysPermission
;
import
com.yxproject.start.mapper.Sys
Permission
Mapper
;
import
com.yxproject.start.service.Sys
Permission
Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
/**
* @author Administrator
*/
@Service
public
class
Sys
temUserServiceImpl
implements
SystemUserService
{
public
class
Sys
PermissionServiceImpl
implements
SysPermissionService
{
@Autowired
private
Sys
temUserMapper
systemUser
Mapper
;
private
Sys
PermissionMapper
sysPermission
Mapper
;
@Override
public
UserInfo
findByUsername
(
String
username
)
{
public
void
addPermission
(
SysPermission
sysPermission
)
{
sysPermissionMapper
.
addPermissionByMap
(
sysPermission
);
UserInfo
user
=
systemUserMapper
.
findUserByUsername
(
username
);
return
user
;
}
...
...
src/main/java/com/yxproject/start/service/impl/UserInfoServiceImpl.java
0 → 100644
View file @
4864387c
package
com
.
yxproject
.
start
.
service
.
impl
;
import
com.yxproject.start.entity.UserInfo
;
import
com.yxproject.start.mapper.UserInfoMapper
;
import
com.yxproject.start.service.UserInfoService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* @author liboyang
*/
@Service
public
class
UserInfoServiceImpl
implements
UserInfoService
{
@Autowired
private
UserInfoMapper
userInfoMapper
;
@Override
public
UserInfo
findByUsername
(
String
username
)
{
UserInfo
user
=
userInfoMapper
.
findUserByUsername
(
username
);
return
user
;
}
// @Override
// public int addUsername(UserInfo userInfo) {
// System.out.println("SystemUserService.addUsername(UserInfo userInfo)");
// userInfoMapper.addUserInfo(userInfo);
// return 1;
// }
//
// @Override
// public int delUsername(UserInfo userInfo) {
// userInfoMapper.delUserInfo(userInfo.getUid());
// return 1;
// }
// @Override
// public int updateUsername(UserInfo userInfo) {
// userInfoMapper.updateUserInfo(userInfo);
// return 1;
// }
}
src/main/resources/application.properties
View file @
4864387c
...
...
@@ -15,10 +15,6 @@ spring.datasource.password = dahai
spring.jpa.hibernate.ddl-auto
=
update
spring.jpa.show-sql
=
true
##jsp 支持
#spring.mvc.view.suffix=.jsp
#spring.mvc.view.prefix=/WEB-INF/jsp/
# thymeleaf
spring.thymeleaf.prefix
=
classpath:/templates/
spring.thymeleaf.suffix
=
.html
...
...
src/main/resources/mapper/SysPermissionMapper.xml
0 → 100644
View file @
4864387c
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.yxproject.start.mapper.SysPermissionMapper"
>
<resultMap
id=
"PermissionMap"
type=
"com.yxproject.start.entity.SysPermission"
>
<id
column=
"id"
property=
"id"
/>
<result
column=
"name"
property=
"name"
/>
<result
column=
"resource_type"
property=
"resourceType"
/>
<result
column=
"url"
property=
"url"
/>
<result
column=
"permission"
property=
"permission"
/>
<result
column=
"parent_id"
property=
"parentId"
/>
<result
column=
"parent_ids"
property=
"parentIds"
/>
<result
column=
"available"
property=
"available"
/>
</resultMap>
<insert
id=
"addPermissionByMap"
parameterType=
"com.yxproject.start.entity.SysPermission"
>
Insert into DAHAI.SYS_PERMISSION (ID,AVAILABLE,NAME,PARENT_ID,PARENT_IDS,PERMISSION,RESOURCE_TYPE,URL) values (PERMISSION_seq.nextval,0,'用户管理',0,'0/','userInfo.view','menu','userList')
</insert>
</mapper>
\ No newline at end of file
src/main/resources/mapper/SystemUserMapper.xml
View file @
4864387c
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.yxproject.start.mapper.
SystemUser
Mapper"
>
<mapper
namespace=
"com.yxproject.start.mapper.
UserInfo
Mapper"
>
<!--<!–用户–>-->
<!--<resultMap id="UserRoleMenuMap" type="com.yxproject.start.entity.UserInfo">-->
<!--<id property="uid" column="uid"/>-->
...
...
@@ -21,7 +21,28 @@
<!--</collection>-->
<!--</collection>-->
<!--</resultMap>-->
<!--<select id="findUserByUsername" resultMap="UserRoleMenuMap" parameterType="string">-->
<!--select user_info.uid,user_info.username,user_info.password,user_info.name,sys_role.id as rid,sys_role.role,sys_role.description,-->
<!--sys_permission.id as pid,sys_permission.name as pname,sys_permission.url-->
<!--from user_info-->
<!--left join sys_user_role on user_info.uid = sys_user_role.uid-->
<!--left join sys_role on sys_user_role.role_id= sys_role.id-->
<!--left join sys_role_permission on sys_role.id = sys_role_permission.permission_id-->
<!--left join sys_permission on sys_role_permission.permission_id = sys_permission.id-->
<!--where username=#{username}-->
<!--</select>-->
<!--<insert id = "addUserInfo" parameterType = "map" statementType = "PREPARED" keyProperty = "u_id" useGeneratedKeys = "true" >-->
<!--insert into USER_INFO (`u_id`,`username`,`name`,`password`,`salt`,`state`) VALUES (USER_INFO_seq.nextval, 'admin', '管理员', 'd3c59d25033dbf980d29554025c23a75', '8d78869f470951332959580424d4bf4f', 0)-->
<!--</insert>-->
<!--<update id = "delUserInfo" parameterType = "int" >-->
<!--update user_info set STATE = 1 where u_id =#{uId}-->
<!--</update>-->
<!--<update id = "updateUserInfo" parameterType = "map" >-->
<!--update user_info set username =#{username},name =#{name},password =#{password} where u_id =#{uId}-->
<!--</update>-->
<!--<select id="findUserByUsername" resultMap="UserRoleMenuMap" parameterType="string">-->
<!--select user_info.uid,user_info.username,user_info.password,user_info.name,sys_role.id as rid,sys_role.role,sys_role.description,-->
...
...
src/main/resources/templates/login.html
View file @
4864387c
<!DOCTYPE html>
<html
lang=
"en"
xmlns:th=
"http://www.w3.org/1999/xhtml"
>
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:th=
"Thymeleaf"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
Login
</title>
<!--<link rel="stylesheet" type="text/css" th:href="@{/css/bootstrap.theme.min.css}"/>-->
<link
rel=
"stylesheet"
type=
"text/css"
href=
"../static/css/bootstrap.theme.min.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"../static/css/bootstrap.min.css"
/>
<script
type=
"text/javascript"
src=
"../static/js/jquery.min.js"
></script>
<script
type=
"text/javascript"
src=
"../static/js/bootstrap.min.js"
></script>
<script
type=
"text/javascript"
>
$
(
function
()
{
var
dheight
=
$
(
document
).
height
();
var
lheight
=
$
(
'#login'
).
height
();
$
(
'#login'
).
css
(
'marginTop'
,
(
dheight
-
lheight
)
/
2
+
'px'
);
})
</script>
</head>
<body>
<body
background=
"images\body_bg5.jpg"
>
错误信息:
<h4
th:text=
"${msg}"
></h4>
<form
action=
""
method=
"post"
>
<p>
账号:
<input
type=
"text"
name=
"username"
value=
"admin"
/></p>
<p>
密码:
<input
type=
"text"
name=
"password"
value=
"123456"
/></p>
<p><input
type=
"submit"
value=
"登录"
/></p>
</form>
<div
class=
"container"
>
<div
id=
"login"
class=
"row"
>
<div
class=
"col-xs-6 col-xs-offset-3"
>
<div
class=
"panel panel-primary"
>
<div
class=
"panel-heading"
>
<h3
class=
"panel-title"
>
用户登录
</h3>
</div>
<div
class=
"panel-body"
style=
"background: rgba(0, 0, 0, 0.1); box-shadow: 10px 10px 5px #888888"
>
<form
class=
"form-horizontal"
action=
"userLogin"
method=
"POST"
>
<div
class=
"form-group"
></div>
<div
class=
"form-group"
>
<label
class=
"col-xs-3 control-label"
>
用户名
</label>
<div
class=
"col-xs-9"
>
<input
type=
"text"
class=
"form-control"
id=
"yhid"
name=
"username"
placeholder=
"请输入用户名称"
>
</div>
</div>
<div
class=
"form-group"
>
<label
class=
"col-xs-3 control-label"
>
密码
</label>
<div
class=
"col-xs-9"
>
<input
type=
"password"
class=
"form-control"
id=
"passid"
name=
"password"
placeholder=
"请输入密码"
>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"col-xs-offset-5 col-xs-2"
>
<button
type=
"submit"
class=
"btn btn-warning btn-block"
>
登 录
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
src/main/resources/templates/userInfoAdd.html
View file @
4864387c
<!DOCTYPE html>
<html
lang=
"en"
>
<html
lang=
"en"
xmlns:th=
"http://www.w3.org/1999/xhtml"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
Add
</title>
</head>
<body>
<h3>
用户添加界面
</h3>
<form
action=
""
th:action=
"@{/permissionAdd}"
method=
"post"
>
<p>
名称:
<input
type=
"text"
name=
"name"
value=
"名称"
/></p>
<p>
资源类型:
<input
type=
"radio"
name=
"resourceType"
value=
"menu"
/>
menu
<input
type=
"radio"
name=
"resourceType"
value=
"button"
/>
button
</p>
<p>
资源路径:
<input
type=
"text"
name=
"url"
value=
"userAdd"
/></p>
<p>
权限字符串:
<input
type=
"text"
name=
"permission"
value=
"userInfo.add"
/></p>
<p>
父编号:
<input
type=
"text"
name=
"parentId"
value=
"1"
/></p>
<p>
父编号列表:
<input
type=
"text"
name=
"parentIds"
value=
"0/1"
/></p>
<p><input
type=
"submit"
value=
"添加"
/></p>
</form>
</body>
</html>
\ No newline at end of file
使用手册.txt
0 → 100644
View file @
4864387c
1.项目部署:
将项目打包成jar,部署到服务器上,启动项目后在浏览器的地址栏输入localhost:8080,若进入登录页面即项目部署完成。
2.登录功能
进入登录页面后,输入用户名和密码,登录成功则页面跳转到该用户的操作页面,登录失败,页面上显示失败原因,比如用户不存在,密码错误等。
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment