2016-04-29 16 views
8

मेरे जावा-प्ले एप्लिकेशन में मेरे पास मेरे नियंत्रक के अंदर एनोटेशन @RequiresAuthentication(clientName = "CasClient") है।सशर्त रूप से एनोटेशन लागू करने का कोई तरीका है?

मैं केवल अपने उत्पादन वातावरण में उपयोगकर्ताओं को प्रमाणीकृत करना चाहता हूं।

मैं सशर्त रूप से एनोटेशन कैसे लागू कर सकता हूं?

अगर मैं प्रमाणीकरण के करीब आ रहा हूं तो गलत है, जावा प्ले एप्लिकेशन में केवल उत्पादन पर सीएएस प्रमाणीकरण करने का पारंपरिक तरीका क्या है?

+0

क्या: Application.java में, सूचकांक विधि के लिए हमारी प्रमाणक के साथ @ Security.Authenticated टिप्पणी जोड़ने? https://www.playframework.com/documentation/2.1.1/JavaGuide4 –

+0

प्रतिक्रिया प्राप्त करने के बाद स्थिति का उपयोग करने का प्रयास करें या जो कुछ भी आप चाहते हैं उसे जांचने के बाद एनोटेशन का उपयोग करें! मुझे यहां समस्या नहीं दिखाई देती है –

+0

@ अहमदअल्स्नी यदि आप एक उदाहरण प्रदान कर सकते हैं कि मैं चेक करने के बाद एनोटेशन का उपयोग कैसे करूं, तो वही है जो मैं उत्तर के लिए देख रहा हूं। – Blinky

उत्तर

3

आप उपयोगकर्ताओं को प्रमाणीकृत करने के लिए प्रमाणीकरण लागू कर सकते हैं। आप अपने प्रमाणीकरण कार्यान्वयन में अपना प्रमाणीकरण तर्क लिख सकते हैं।

प्ले पहले से ही प्रमाणीकरण क्रिया में निर्मित के साथ आता है, जिसे हम अपने तर्क को जोड़ने के लिए विस्तारित करेंगे। हम इस प्रामाणिक सुरक्षित पर कॉल करेंगे।

import play.*; 
import play.mvc.*; 
import play.mvc.Http.*; 

import models.*; 

public class Secured extends Security.Authenticator { 

    @Override 
    public String getUsername(Context ctx) { 
     return ctx.session().get("email"); 
    } 

    @Override 
    public Result onUnauthorized(Context ctx) { 
     return redirect(routes.Application.login()); 
    } 
} 

हमने यहां दो विधियां लागू की हैं। getUsername वर्तमान उपयोगकर्ता में उपयोगकर्ता नाम प्राप्त करने के लिए उपयोग किया जाता है। हमारे मामले में यह ईमेल पता है, जिसे हमने उपयोगकर्ता में लॉग इन करते समय सत्र में ईमेल विशेषता में सेट किया था। यदि यह विधि मान देता है, तो प्रमाणीकरणकर्ता उपयोगकर्ता को लॉग इन करने पर विचार करता है, और अनुरोध को आगे बढ़ने देता है । यदि विधि शून्य लौटाती है, तो प्रमाणीकरण अनुरोध को अवरुद्ध कर देगा, और इसके बजाय पर हस्ताक्षर किए गए पर, जिसे हमने अपनी लॉगिन स्क्रीन पर रीडायरेक्ट करने के लिए लागू किया है। उपयोगकर्ता सत्यापित करने के लिए आप अपना खुद का व्यवसाय तर्क लागू कर सकते हैं।

अब इस प्रामाणिक का उपयोग करें। उस के बारे में

import play.mvc.Controller; 
import play.mvc.Result; 

public class Application extends Controller { 

    @Security.Authenticated(Secured.class) 
     public static Result index() { 
     return ok(index.render(
     Project.findInvolving(request().username()), 
      Task.findTodoInvolving(request().username()), 
      User.find.byId(request().username()) 
     )); 
    } 
} 

Refs:Play Implementing Authenticator Example

संबंधित मुद्दे