首頁 > web前端 > js教程 > 主體

springmvc實現註解攔截器

php中世界最好的语言
發布: 2018-04-13 17:05:31
原創
1390 人瀏覽過

這次帶給大家springmvc實現註解攔截器,springmvc實現註解攔截器的注意事項有哪些,下面就是實戰案例,一起來看一下。

最近在用SpringMvc寫專案的時候,遇到一個問題,就是方法的鑑權問題,這個問題弄了一天了終於解決了,下面看下解決方法

專案需求:需要鑑權的地方,我只需要打個標籤即可,例如只有使用者登入才可以進行的操作,一般情況下我們會在執行方法時先對使用者的身分進項校驗,這樣無形中增加了非常大的工作量,重複造輪子,有了java註解只需要在需要鑑權的方法上面打個標籤即可:

解決方案:

  1、先建立一個註解類別:

@Documented
@Inherited
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Auth {
  boolean validate() default true;
}
登入後複製

2、再建立一個攔截器:

public class AuthInterceptor extends BaseInterceptor{
	@Override
	  public Boolean preHandle(HttpServletRequest request,
	      HttpServletResponse response, Object handler) throws Exception {
		if(handler.getClass().isAssignableFrom(HandlerMethod.class)){
			Auth authPassport = ((HandlerMethod) handler).getMethodAnnotation(Auth.class);
			//没有声明需要权限,或者声明不验证权限
			if(authPassport==null){
				return true;
			} else{
				//在这里实现自己的权限验证逻辑
				if(true){
					//如果验证成功返回true(这里直接写false来模拟验证失败的处理)
					System.out.println("执行权限校验了");
					return true;
				} else{
					//如果验证失败
					//返回到登录界面
					//          System.out.println("权限校验对了");
					//          response.sendRedirect("account/login");
					return false;
				}
			}
		} else{
			return true;
		}
	}
}
登入後複製

3.設定攔截器:需要在*-servlet.xml裡面增加以下程式碼,如果您自訂了設定檔也可直接放到您定義的設定檔中

<mvc:interceptors>
	<bean class="com.benxq.shop.user.interceptors.AuthInterceptor"/>
</mvc:interceptors>
登入後複製

注意:需要將預設的改為RequestMappingHandlerMapping,增加RequestMappingHandlerAdapter的bean

重新啟動tomcat即可,

小提醒:如果對方法需要鑑權只需要在方法上面打上@Auth,如果對類別的所有方法需要鑑權,只需要在類別上面打上@Auth即可。

那麼問題來了,方法攔截器會吧靜態資源一塊攔截,我們需要在tomcat中進行對靜態文件進行攔截如:我的解決方法是在web.xml進行配置,大家有好的方法也可以加我扣扣752432995一塊探討

<servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>*.jpg</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>*.png</url-pattern>
 </servlet-mapping>
登入後複製

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

JSONAPI在PHP中的使用方法

zTree的樹狀選單使用步奏詳解

以上是springmvc實現註解攔截器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板