Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fgqyxxlr
Overview
Overview
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
yaru
fgqyxxlr
Commits
12593459
Commit
12593459
authored
Apr 26, 2019
by
wangjianlong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复权限校验失败跳转页面配置错误的bug
parent
d9aa73a7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
159 additions
and
159 deletions
+159
-159
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+65
-65
ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
+94
-94
No files found.
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
View file @
12593459
package
com
.
ruoyi
.
web
.
controller
.
system
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.shiro.SecurityUtils
;
import
org.apache.shiro.authc.AuthenticationException
;
import
org.apache.shiro.authc.UsernamePasswordToken
;
import
org.apache.shiro.subject.Subject
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.utils.ServletUtils
;
import
com.ruoyi.common.utils.StringUtils
;
/**
* 登录验证
*
* @author ruoyi
*/
@Controller
public
class
SysLoginController
extends
BaseController
{
@GetMapping
(
"/login"
)
public
String
login
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
// 如果是Ajax请求,返回Json字符串。
if
(
ServletUtils
.
isAjaxRequest
(
request
))
{
return
ServletUtils
.
renderString
(
response
,
"{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}"
);
}
return
"login"
;
}
@PostMapping
(
"/login"
)
@ResponseBody
public
AjaxResult
ajaxLogin
(
String
username
,
String
password
,
Boolean
rememberMe
)
{
UsernamePasswordToken
token
=
new
UsernamePasswordToken
(
username
,
password
,
rememberMe
);
Subject
subject
=
SecurityUtils
.
getSubject
();
try
{
subject
.
login
(
token
);
return
success
();
}
catch
(
AuthenticationException
e
)
{
String
msg
=
"用户或密码错误"
;
if
(
StringUtils
.
isNotEmpty
(
e
.
getMessage
()))
{
msg
=
e
.
getMessage
();
}
return
error
(
msg
);
}
}
@GetMapping
(
"/unauth"
)
public
String
unauth
()
{
return
"
/error/unauth"
;
}
}
package
com
.
ruoyi
.
web
.
controller
.
system
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.shiro.SecurityUtils
;
import
org.apache.shiro.authc.AuthenticationException
;
import
org.apache.shiro.authc.UsernamePasswordToken
;
import
org.apache.shiro.subject.Subject
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.utils.ServletUtils
;
import
com.ruoyi.common.utils.StringUtils
;
/**
* 登录验证
*
* @author ruoyi
*/
@Controller
public
class
SysLoginController
extends
BaseController
{
@GetMapping
(
"/login"
)
public
String
login
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
// 如果是Ajax请求,返回Json字符串。
if
(
ServletUtils
.
isAjaxRequest
(
request
))
{
return
ServletUtils
.
renderString
(
response
,
"{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}"
);
}
return
"login"
;
}
@PostMapping
(
"/login"
)
@ResponseBody
public
AjaxResult
ajaxLogin
(
String
username
,
String
password
,
Boolean
rememberMe
)
{
UsernamePasswordToken
token
=
new
UsernamePasswordToken
(
username
,
password
,
rememberMe
);
Subject
subject
=
SecurityUtils
.
getSubject
();
try
{
subject
.
login
(
token
);
return
success
();
}
catch
(
AuthenticationException
e
)
{
String
msg
=
"用户或密码错误"
;
if
(
StringUtils
.
isNotEmpty
(
e
.
getMessage
()))
{
msg
=
e
.
getMessage
();
}
return
error
(
msg
);
}
}
@GetMapping
(
"/unauth"
)
public
String
unauth
()
{
return
"
error/unauth"
;
}
}
ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
View file @
12593459
package
com
.
ruoyi
.
framework
.
web
.
exception
;
import
javax.servlet.http.HttpServletRequest
;
import
org.apache.shiro.authz.AuthorizationException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.HttpRequestMethodNotSupportedException
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
org.springframework.web.servlet.ModelAndView
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.exception.BusinessException
;
import
com.ruoyi.common.exception.DemoModeException
;
import
com.ruoyi.common.utils.ServletUtils
;
import
com.ruoyi.common.utils.security.PermissionUtils
;
/**
* 全局异常处理器
*
* @author ruoyi
*/
@RestControllerAdvice
public
class
GlobalExceptionHandler
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
GlobalExceptionHandler
.
class
);
/**
* 权限校验失败 如果请求为ajax返回json,普通请求跳转页面
*/
@ExceptionHandler
(
AuthorizationException
.
class
)
public
Object
handleAuthorizationException
(
HttpServletRequest
request
,
AuthorizationException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
if
(
ServletUtils
.
isAjaxRequest
(
request
))
{
return
AjaxResult
.
error
(
PermissionUtils
.
getMsg
(
e
.
getMessage
()));
}
else
{
ModelAndView
modelAndView
=
new
ModelAndView
();
modelAndView
.
setViewName
(
"
/error/unauth"
);
return
modelAndView
;
}
}
/**
* 请求方式不支持
*/
@ExceptionHandler
({
HttpRequestMethodNotSupportedException
.
class
})
public
AjaxResult
handleException
(
HttpRequestMethodNotSupportedException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
return
AjaxResult
.
error
(
"不支持' "
+
e
.
getMethod
()
+
"'请求"
);
}
/**
* 拦截未知的运行时异常
*/
@ExceptionHandler
(
RuntimeException
.
class
)
public
AjaxResult
notFount
(
RuntimeException
e
)
{
log
.
error
(
"运行时异常:"
,
e
);
return
AjaxResult
.
error
(
"运行时异常:"
+
e
.
getMessage
());
}
/**
* 系统异常
*/
@ExceptionHandler
(
Exception
.
class
)
public
AjaxResult
handleException
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
return
AjaxResult
.
error
(
"服务器错误,请联系管理员"
);
}
/**
* 业务异常
*/
@ExceptionHandler
(
BusinessException
.
class
)
public
AjaxResult
businessException
(
BusinessException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
return
AjaxResult
.
error
(
e
.
getMessage
());
}
/**
* 演示模式异常
*/
@ExceptionHandler
(
DemoModeException
.
class
)
public
AjaxResult
demoModeException
(
DemoModeException
e
)
{
return
AjaxResult
.
error
(
"演示模式,不允许操作"
);
}
}
package
com
.
ruoyi
.
framework
.
web
.
exception
;
import
javax.servlet.http.HttpServletRequest
;
import
org.apache.shiro.authz.AuthorizationException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.HttpRequestMethodNotSupportedException
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
org.springframework.web.servlet.ModelAndView
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.exception.BusinessException
;
import
com.ruoyi.common.exception.DemoModeException
;
import
com.ruoyi.common.utils.ServletUtils
;
import
com.ruoyi.common.utils.security.PermissionUtils
;
/**
* 全局异常处理器
*
* @author ruoyi
*/
@RestControllerAdvice
public
class
GlobalExceptionHandler
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
GlobalExceptionHandler
.
class
);
/**
* 权限校验失败 如果请求为ajax返回json,普通请求跳转页面
*/
@ExceptionHandler
(
AuthorizationException
.
class
)
public
Object
handleAuthorizationException
(
HttpServletRequest
request
,
AuthorizationException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
if
(
ServletUtils
.
isAjaxRequest
(
request
))
{
return
AjaxResult
.
error
(
PermissionUtils
.
getMsg
(
e
.
getMessage
()));
}
else
{
ModelAndView
modelAndView
=
new
ModelAndView
();
modelAndView
.
setViewName
(
"
error/unauth"
);
return
modelAndView
;
}
}
/**
* 请求方式不支持
*/
@ExceptionHandler
({
HttpRequestMethodNotSupportedException
.
class
})
public
AjaxResult
handleException
(
HttpRequestMethodNotSupportedException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
return
AjaxResult
.
error
(
"不支持' "
+
e
.
getMethod
()
+
"'请求"
);
}
/**
* 拦截未知的运行时异常
*/
@ExceptionHandler
(
RuntimeException
.
class
)
public
AjaxResult
notFount
(
RuntimeException
e
)
{
log
.
error
(
"运行时异常:"
,
e
);
return
AjaxResult
.
error
(
"运行时异常:"
+
e
.
getMessage
());
}
/**
* 系统异常
*/
@ExceptionHandler
(
Exception
.
class
)
public
AjaxResult
handleException
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
return
AjaxResult
.
error
(
"服务器错误,请联系管理员"
);
}
/**
* 业务异常
*/
@ExceptionHandler
(
BusinessException
.
class
)
public
AjaxResult
businessException
(
BusinessException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
return
AjaxResult
.
error
(
e
.
getMessage
());
}
/**
* 演示模式异常
*/
@ExceptionHandler
(
DemoModeException
.
class
)
public
AjaxResult
demoModeException
(
DemoModeException
e
)
{
return
AjaxResult
.
error
(
"演示模式,不允许操作"
);
}
}
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