问题
I am trying to put together an application using yii-user
and yii-eauth
extensions but I am coming up short. When I create a new webapp and install eauth I can get it to work fine so I know that I am not doing anything wrong on that end. I think the problem lies with my urls. This is a demo of what it is supposed to be like: http://nodge.ru/yii-eauth/demo/login. When someone clicks on say google it should bring you to the google sign in page but on my application I am getting a 404 error that states "The system is unable to find the requested action "login"."
The url for this is user/user/login/service/google_oauth
whereas the url should read user/login/service/google_oauth
. Upon typing this into the browser manually I am redirected to the right page.
So I took a look into the EAuthWidget.php
class to see if I could find out where it was getting that extra "user" from but I could not figure it out. I think it may have something to do with the fact that I have this in the user module which is in the /modules/user
directory in my webapp. I also tried to use the URLManager
to point to the right address but with no luck.
Does anyone have any similar experiences setting this up? Or any suggestions?
回答1:
You just need to change the widget initialization code in your view(namely change the action
property of the widget), somewhat like this:
<h2>Do you already have an account on one of these sites? Click the logo to log in with it here:</h2>
<?php
$this->widget('ext.eauth.EAuthWidget', array('action' => 'login'));
?>
Just to add, keep in mind that this action depends on which view you are including this widget, if the view is protected/views/site/login.php (which is yii's default site login view) then action should be able to go to the yii-user module's login action, so it'll be : 'action'=>'/user/login'
, however if you are including this widget in yii-user's protected/modules/user/views/user/login.php then the action will be 'login'
as already mentioned.
来源:https://stackoverflow.com/questions/10729779/yii-user-and-yii-eauth-integration