সিমফনি 2: কোনও ব্যবহারকারী কোনও টেমপ্লেটের অভ্যন্তরে লগ ইন না করা আছে কীভাবে আমি তা পরীক্ষা করব?


102

সিমফনি 2 টেম্পলেটগুলিতে (টুইগ ব্যবহার করে), কোনও ব্যবহারকারী লগ ইন না করা আছে কি করে আমি কার্যকরভাবে তা পরীক্ষা করতে পারি?

আমি ROLEচেক ব্যবহার করতে চাই না । আমি কোনও ব্যবহারকারী লগ ইন নেই কিনা তা যাচাই করার জন্য একটি সহজ উপায় চাই।

আমি সচেতন যে কাজের app.user.usernameসাথে তুলনা করি anon, তবে এটি আমার পক্ষে ঠিক বোধ হয় না।

উত্তর:


191

App.user সেট করা আছে কিনা তা আপনি পরীক্ষা করতে পারেন।

 {% if app.user %}
    # user is logged in
 {% else %}
    # user is not logged in
 {% endif %}

17
মনে রাখবেন যে আপনি যদি ব্যবহারকারী লগ ইন না করে থাকেন তা পরীক্ষা করতে চান তবে আপনি ব্যবহার করতে পারেন:{% if not app.user %}
ম্যাক_কেন

44
{% if is_granted('IS_AUTHENTICATED_FULLY') %}পরিবর্তে ব্যবহার করুন। Symfony2 ডক দেখুন: symfony.com/doc/current/book/…সাইলেক্সের
রোনান

16
{% if is_granted('IS_AUTHENTICATED_FULLY') %}যদি ব্যবহারকারী বর্তমান অধিবেশনটিতে প্রমাণীকরণ করে থাকে তবে রোনান কেবল সত্যই ফিরে আসবে। যদি ব্যবহারকারী আমাকে স্মরণ করে কুকির মাধ্যমে প্রমাণীকৃত হয় তবে এটি মিথ্যা প্রত্যাবর্তন করবে। ব্যবহার {% if app.user %}করা সঠিক, যদি ব্যবহারকারী সত্যায়িত হয় তবে নির্বিশেষে যদি কেউ সত্য ফিরে আসতে চায়।
রায়অনএয়ার

@ রোনান, এটি নিম্নলিখিত ত্রুটির ফলে ফলাফল হিসাবে কাজ করে না: "সিমফনি \ উপাদান \ সুরক্ষা \ কোর \ প্রমাণীকরণ \ টোকেন \ প্রিঅথিত্তিক টোকেন" শ্রেণির টোকেনের জন্য কোনও প্রমাণীকরণ সরবরাহকারী পাওয়া যায় নি।
হ্যারল্ড

{% if app.security.token is null or app.security.token.user == 'anon.' %}
সেভাবেই

100

যদিও বর্তমান উত্তরটি ওপির প্রশ্নের উত্তর দেয়, আমি আরও বিশদ যুক্ত করতে চাই।

আমি বুঝতে পারি যে ওপি ভূমিকাগুলি যাচাই করতে চায় নি, তবে আমি তাদের অন্তর্ভুক্ত করছি যাতে অন্যান্য এসও ব্যবহারকারীরা ভবিষ্যতে এ থেকে অনুলিপি করতে এবং এটি আটকে দিতে পারে। - যতবার আমি এটি গুগল করি, আমি এখানেই শেষ করি!

সিমফনি ডক সূত্র:


কোনও ব্যবহারকারী লগ ইন করেছেন কিনা তা পরীক্ষা করুন (ভূমিকা নির্বিশেষে)

উত্তর হিসাবে, আপনি কোনও ব্যবহারকারী লগ ইন করেছেন app.userকিনা তা পরীক্ষা করতে ব্যবহার করতে পারেন ।

{% if app.user %}
    # user is logged in (any and all users, regardless of ROLE_*)
{% elseif not app.user %}
    # user is not logged in (note the `not` in the `elseif` statement)
{% endif %}

প্রমাণীকরণের স্থিতি পরীক্ষা করা হচ্ছে

is_granted()পরীক্ষা করার জন্য আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন ROLES, (নীচে সিমফনি দ্বারা নির্ধারিত সমস্ত ভূমিকা রয়েছে, আপনার নিজের ভূমিকাও থাকতে পারে (আরও নীচে) )

{% if is_granted('IS_AUTHENTICATED_FULLY') %}
    # This user entered their credentials THIS session
{% elseif is_granted('IS_AUTHENTICATED_REMEMBERED') %}
    # User logged in via a cookie (ie: Auth again before doing sensitive things)
{% elseif is_granted('IS_AUTHENTICATED_ANONYMOUSLY') %}
    # This is a `guest` or anonymous user
{% endif %}

ডক্স থেকে:

IS_AUTHENTICATED_ANONYMOUSLY - স্বয়ংক্রিয়ভাবে এমন কোনও ব্যবহারকারীকে অর্পণ করা হয়েছে যিনি সাইটের ফায়ারওয়াল সুরক্ষিত অংশে আছেন তবে যিনি আসলে লগইন করেননি This অজ্ঞাত অ্যাক্সেসের অনুমতি দেওয়া হলে এটি কেবল সম্ভব।

IS_AUTHENTICATED_REMEMBERED - স্বয়ংক্রিয়ভাবে এমন কোনও ব্যবহারকারীকে অর্পণ করা হয়েছে যিনি আমাকে মনে রাখার কুকির মাধ্যমে প্রমাণীকরণ করেছিলেন।

IS_AUTHENTICATED_FULLY - স্বয়ংক্রিয়ভাবে এমন কোনও ব্যবহারকারীকে অর্পণ করা হয়েছে যা বর্তমান সেশনের সময় তাদের লগইন বিশদ সরবরাহ করেছে।


ভূমিকা পরীক্ষা করা হচ্ছে

is_granted()ভূমিকাগুলি পরীক্ষা করার জন্য আপনিও ব্যবহার করতে পারেন ।
ধরে নেওয়া যাক আমরা 3 ভূমিকা আছে ( ROLE_SUPER_ADMIN, ROLE_ADMIN, & ROLE_USER)

{% if is_granted('ROLE_SUPER_ADMIN') -%}
    # You're `ROLE_SUPER_ADMIN`
{% elseif is_granted('ROLE_ADMIN') -%}
    # You're `ROLE_ADMIN`
{% elseif is_granted('ROLE_USER') -%}
    # You're `ROLE_USER`
{% else %}
    # You're a `nobody` ;P
{%- endif %}

একটি নিয়ামকের ভিতরে উপরেরটি করা

নিম্নলিখিত উত্তরটি দেখুন: কোনও ব্যবহারকারী কোনও নিয়ন্ত্রণকারীর মধ্যে সিমফনি 2 এ লগইন করেছেন কিনা তা কীভাবে পরীক্ষা করবেন?


4
আমি শুধু কৌতূহলী ... কি -%}এবং {%-দাঁড়ানো? কেন %}এবং না {%?
ভি-লাইট

11
-সব শেষে হোয়াইটস্পেস যাতে এটি ব্রাউজার সোর্স আরও পাঠযোগ্য এর সরিয়ে ফেলা হয়। এখানে আরও তথ্য: twig.sensiolabs.org/doc/templates.html#Witespace-control
অনিল

এই বাঁচার জন্য পুরানো প্রশ্নটি আবার বাঁচানোর জন্য আমাকে ক্ষমা করুন, তবে আমি মনে করি যে আমি কোথাও এই অ্যাপটি পড়েছি u ব্যবহারকারী বেনামে ব্যবহারকারীর জন্য নালার হবে না, এটি কি সঠিক নয়? তার মানে এই নয় যে অ্যাপ্লিকেশন ব্যবহারকারীদের জন্য পরীক্ষা করা যথেষ্ট নয়?
pzaj

@Anil symfony.com/doc/2.8/templating/app_variable.html দ্বিতীয় প্যারামিটার বর্ণনা app.user, যে ভালো যাচ্ছে The value stored in this variable can be a UserInterface object, any other object which implements a __toString() method or even a regular string.। আমি যে অ্যাপটি কোথায় পড়েছিলাম তা মনে নেই u দুর্ভাগ্যক্রমে এবং কোন পরিস্থিতিতে স্ট্রিং।
pzaj

4
@ user1970395 ডক্সে প্রথম লাইনটি পড়েছে The representation of the current user or null if there is none., তাই এটি বাতিল হবে। কোনও তৃতীয় পক্ষের বান্ডিল একটি স্ট্রিং ফিরিয়ে দিতে পারে যদি কাস্টম UserInterfaceপ্রয়োগের এমন কোনও __toString()পদ্ধতি থাকে যার নাম বেনাম থাকে।
অনিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.